PDFからテキストと画像を抽出するために、誰でもライブラリ/ APIを推奨できますか?ドキュメントの既知の領域に含まれるテキストを取得できるようにする必要があるため、APIはページ上の各要素の位置情報を提供する必要があります。
そのデータをxml
またはjson
形式で出力したいと思います。現在、PdfTextStreamを見ていますが、これはかなり良いようですが、他の人々の経験や提案を聞きたいと思っています。
プログラムからpdfからテキストを抽出するための代替手段(市販のものまたは無料のもの)はありますか?
インポートする必要があったデータのテーブルを含む400ページのpdfファイルが提供されました-幸いなことに画像はありません。 Ghostscript 私のために働いた:
gswin64c -sDEVICE=txtwrite -o output.txt input.pdf
出力ファイルはヘッダーなどを含むページに分割されましたが、その後、空白行などを取り除き、30,000件すべてのレコードを取り込むアプリを書くのは簡単でした。この場合、-dSIMPLE
と-dCOMPLEX
は違いがありません。
今日から私はそれを知っています:PDFからのテキスト抽出のための最良のものは TET、テキスト抽出ツールキット 。 TETはPDFlib.com製品ファミリーの一部です。
PDFlib.comはThomas Merzの会社です。彼の名前がわからない場合:Thomas Merzは「PostScript and PDF Bible」の著者です。
TETの最初の化身は a library です。ページ上のすべての要素に関する位置情報など、Budda006が望むすべてのことをおそらく実行できます。ああ、それは画像を抽出することもできます。断片化された画像を再結合します。
pdflib.comは、このテクノロジーの別の形、 Acrobat のTETプラグインも提供しています。 3番目の化身は PDFlib TET iFilter です。これは、ユーザーデスクトップ用のスタンドアロンツールです。どちらも(ビールのように)プライベートで非営利的な目的で使用できます。
そしてそれは本当に強力です。 Adobe独自のテキスト抽出よりもはるかに優れています。他のツール(Adobeのツールを含む)がゴミのみを吐き出すテキストを抽出しました。
デスクトップスタンドアロンツールをテストしましたが、Webページで彼らが言うことは本当です。非常に優れたコマンドラインがあります。 「問題のある」PDFテストファイルの一部は、ツールが完全に満足して処理しました。
これは今後、洗練された挑戦的なPDFテキスト抽出要件すべてに対する私の推奨事項になります。
TETは単純に素晴らしいです。テーブルを検出します。テーブル内で、複数の列にまたがるセルを識別します。テーブルの行と各テーブルセルの内容を個別に識別します。ハイフネーションをうまく処理します。ハイフンを削除し、完全な単語を復元します。非ASCII言語(CJK、アラビア語、ヘブライ語を含む)をサポートしています。合字に遭遇すると、元の文字を復元します...
試してみる。
効率的なコマンドラインツール、オープンソース、無料で、LinuxとWindowsの両方で利用可能:単にpdftotextという名前。このツールはxpdfライブラリの一部です。
Pythonの場合、 PDFMiner と pyPDF2 があります。これらの詳細については、 PDFをテキストに変換するPythonモジュール を参照してください。
PdfTextStream (あなたが見ていると言った)は、シングルスレッドアプリケーションではfreeになりました。私の意見では、その品質は他のライブラリよりもはるかに優れています(特にファンキーな埋め込みフォントなど)。
または、オープンソースの Apache PDFBox をご覧ください。
これが私の提案です。 PDFからテキストを抽出する場合は、pdfファイルをGoogleドキュメントにインポートし、.html、.odf、.rtf、.txtなどのより使いやすい形式にエクスポートできます。これらはすべて、Drive APIを使用して。無料*で堅牢です。を見てみましょう:
https://developers.google.com/drive/v2/reference/files/inserthttps://developers.google.com/drive/v2/reference/files/get
これはREST APIであるため、すべてのプログラミング言語と互換性があります。上記のリンクには、Java、.NET、Python、PHP、Rubyなどの多くの言語の実用例があります。
役に立てば幸いです。
ここでのコメントの1つは、Windowsでgsを使用しました。次の構文で、Linux/OSXでもある程度成功しました。
gs \
-q \
-dNODISPLAY \
-dSAFER \
-dDELAYBIND \
-dWRITESYSTEMDICT \
-dSIMPLE \
-f ps2ascii.ps \
"${input}" \
-dQUIET \
-c quit
dSIMPLE
の代わりにdCOMPLEX
を使用しました。後者は1行に1文字を出力するためです。
Docotic.Pdfライブラリ を使用して PDFからテキストを抽出 ファイルをプレーンテキストまたは各チャンクの座標を持つテキストチャンクのコレクションとして使用できます。
Docotic.Pdfは PDFから画像を抽出する にも使用できます。
免責事項:私はビットミラクルで働いています。
質問は具体的にはPDFからXMLからデータを取得するための代替ツールに関するものであるため、商用ツール "ByteScout PDF Extractor SDK" これを正確に行うことができます:位置データ(x、y)およびフォント情報とともにXMLとしてPDFからテキストを抽出します。
ソースPDFのテキスト:
Products | Units | Price
出力XML:
<row>
<column>
<text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text>
</column>
<column>
<text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text>
</column>
<column>
<text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text>
</column>
</row>
追伸:さらに、テキストを表ベースの構造に分割します。
開示:ByteScoutで働いています
私はこのトピックがかなり古いことを知っていますが、この必要性はまだ生きています。私は多くのドキュメント、フォーラム、スクリプトを読み、圧縮されたpdfと非圧縮のpdfをサポートする新しい高度なドキュメントを作成します。
https://Gist.github.com/smalot/6183152
場合によっては、セキュリティ上の理由からコマンドラインが禁止されています。したがって、ネイティブPHPクラスは多くのニーズに対応できます。
それがみんなに役立つことを願って
(「シンプルな」ツールのリスト内で)私が現在考えることができる最良のものは、 Ghostscript (現在のバージョンはv.8.71)とPostScriptユーティリティプログラムps2ascii.ps
です。 Ghostscriptは、lib
サブディレクトリに同梱されています。これを試してください(Windows):
gswin32c.exe ^
-q ^
-sFONTPATH=c:/windows/fonts ^
-dNODISPLAY ^
-dSAFER ^
-dDELAYBIND ^
-dWRITESYSTEMDICT ^
-dCOMPLEX ^
-f ps2ascii.ps ^
-dFirstPage=3 ^
-dLastPage=7 ^
input.pdf ^
-dQUIET ^
-c quit
このコマンドは、input.pdf
の3-7ページを処理します。 ps2ascii.ps
ファイル自体のコメントを読んで、「奇妙な」数字と追加情報の意味を確認してください(これらは、文字列、位置、幅、色、写真、長方形、フォント、改ページを示します。) 。)。 「単純な」テキスト出力を取得するには、-dCOMPLEX
部分を-dSIMPLE
に置き換えます。
画像抽出の場合、pdfimagesはLinuxまたはWindows(win32)用の無料のコマンドラインツールです。
Apache pdfboxにはこの機能があります-テキスト部分は以下で説明されています:
http://pdfbox.Apache.org/apidocs/org/Apache/pdfbox/util/PDFTextStripper.html
実装例については https://github.com/WolfgangFahl/pdfindexer を参照してください
テストケースTestPdfIndexer.testExtractingは、それがどのように機能するかを示します
QuickPDFは、リーズナブルな価格で必要なことを行うべき合理的なライブラリのようです。
http://www.quickpdflibrary.com/ -30日間のトライアルがあります。
私のMacintoshシステムでは、「Adobe Reader」がかなり良い仕事をしていることがわかりました。 「Adobe Reader.app」を指すエイリアスをデスクトップに作成しました。エイリアスにpdfファイルをドロップするだけで、Adobe Readerでアクティブなドキュメントになり、[ファイル]メニューから、 「テキストとして保存...」を選択し、名前と保存場所を指定して、「保存」をクリックします。