Ruby(LinuxおよびOSX上)で大きなPDFファイルを読み取り/解析するための高速で信頼性の高い方法を探しています。
今まで、かなり古くてシンプルなPDF ツールキット( pdftotext -wrapper) とPDF-readerを見つけましたが、ほとんどのファイルを読み取ることができませんでした。2 つのライブラリは、私が探していた機能を正確に提供します。
私の質問: 何か見逃したことがありますか? 問題を解決するのにより適した (より高速で信頼性の高い) ツールはありますか?
Ruby(LinuxおよびOSX上)で大きなPDFファイルを読み取り/解析するための高速で信頼性の高い方法を探しています。
今まで、かなり古くてシンプルなPDF ツールキット( pdftotext -wrapper) とPDF-readerを見つけましたが、ほとんどのファイルを読み取ることができませんでした。2 つのライブラリは、私が探していた機能を正確に提供します。
私の質問: 何か見逃したことがありますか? 問題を解決するのにより適した (より高速で信頼性の高い) ツールはありますか?
Docsplitが役立つ場合があります。
Docsplit は、ドキュメントをコンポーネント パーツに分割するためのコマンド ライン ユーティリティおよび Ruby ライブラリです。検索可能な UTF-8 プレーン テキスト、任意の形式のページ画像またはサムネイル、PDF、単一ページ、およびドキュメント メタデータ (タイトル、作成者、ページ数) ...)
JRuby と、ApachePDFBox ( https://www.ohloh.net/p/pdfbox )などの Java PDF ライブラリ パーサーを使用できます。http://java-source.net/open-source/pdf-librariesも参照してください。
CombinePDFライブラリをご覧になりましたか?
これは、ページの抽出、ある PDF ページの別のページへのオーバーレイ、ページ番号付け、基本的なテキストや表の作成など、いくつかの PDF 操作を可能にする純粋な Ruby ソリューションです。
以下は、既存の PDF ファイルにロゴをスタンプする例です。この例では、PDF ファイルを読み取り、1 つのページを抽出してスタンプとして使用し、別の PDF ファイルにスタンプを付けます。
require 'combine_pdf'
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
pdf = CombinePDF.load "content_file.pdf"
pdf.pages.each {|page| page << company_logo}
pdf.save "content_with_logo.pdf"
テキストにスタンプを押したり、ページに番号を付けたり、次を使用したりすることもできます。
require 'combine_pdf'
pdf = CombinePDF.load "content_file.pdf"
pdf.number_pages #adds page numbers. you can add formatting and placement options.
pdf.pages.each {|page| page.textbox "One Way To Stamp"}
#you can a shortcut method to stamp pages
pdf.stamp_pages "Another way to stamp"
#you can use the shortcut method for both text and PDF stamps
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
pdf.stamp_pages company_logo
# you can use write simple tables
pdf.pages[0].write_table headers: ['first name', 'surname'], table_data: [['John', 'Doe'], ['Mr.', 'Smith']]
pdf.save "content_with_logo.pdf"
複雑な操作向けではありませんが、ほとんどの PDF オーサリング ライブラリを補完し、すべてをゼロから作成する代わりに PDF テンプレートを使用できるようにします。
PDF ファイルからテキスト コンテンツを取得するだけの場合は、sourceforge の pdftohtml が効率的です。画像を扱うのには適していません。
以下にいくつかのオプションを示します。
http://en.wikipedia.org/wiki/List_of_PDF_software
そのリンクから、sourceforge を検索すると、次のようなコマンド ライン ユーティリティがいくつかあります: http://pdftohtml.sourceforge.net/
要件と PDF の外観に応じて、Google Docs API (PDF をアップロードしてからテキストとしてダウンロード) を使用するか、 gocrなどを試すこともできます。過去に gocr を使用して画像テキストを解析するのに多くの幸運がありましたが、それを行うにはシェルにバウンスする必要がありますgocr -i whatever.pdf
(PDF で動作すると思います)。
これらすべての欠点は、それらが純粋な Ruby 実装ではないことですが、多くの優れた (そして無料の) OCR プロジェクトはそのように行われているようです。