PDF Ghostscriptを使用して)の部分(座標を使用)からテキストを抽出したいと思います。
誰も私を助けることができますか?
はい、Ghostscriptを使用すると、PDFからテキストをcan抽出できます。しかし、いや、それは仕事に最適なツールではありません。いいえ、「部分」(単一ページの一部)でそれを行うことはできません。できること:特定の範囲のページのテキストのみを抽出します。
txtwrite
出力デバイス(あまり良くない) gs \
-dBATCH \
-dNOPAUSE \
-sDEVICE=txtwrite \
-dFirstPage=3 \
-dLastPage=5 \
-sOutputFile=- \
/path/to/your/pdf
これにより、ページ3〜5に含まれるすべてのテキストが標準出力に出力されます。テキストファイルに出力する場合は、-sOutputFile=textfilename.txt
を使用します。
gs
更新:
Ghostscriptの最近のバージョンでは、txtwrite
デバイスの大幅な改善とバグ修正が行われています。詳細については、 最近のGhostscriptの変更ログ (txtwriteを検索)を参照してください。
ps2ascii.ps
PostScriptユーティリティ (より良い)これには、最新バージョンのファイルps2ascii.psを Ghostscript Gitソースコードリポジトリ からダウンロードする必要があります。 PDF=をPostScriptに変換してから、PSファイルで次のコマンドを実行する必要があります。
gs \
-q \
-dNODISPLAY \
-P- \
-dSAFER \
-dDELAYBIND \
-dWRITESYSTEMDICT \
-dSIMPLE \
/path/to/ps2ascii.ps \
input.ps \
-c quit
-dSIMPLE
パラメーターが定義されていない場合、各出力行には、使用されるフォントとフォントサイズに関する純粋なテキストコンテンツ以外の追加情報が含まれます。
そのパラメーターを-dCOMPLEX
に置き換えると、使用されている色と画像に関する追加情報が得られます。
このユーティリティの詳細については、ps2ascii.ps内のコメントをお読みください。使用するのは快適ではありませんが、私にとってはほとんどの場合それが必要でした。
pdftotext
CLIユーティリティ(Ghostscriptよりも快適)テキスト抽出を行うより快適な方法:pdftotext
を使用します(Windows、Linux/Unix、またはMac OS Xで使用可能)。このユーティリティは、PopplerまたはXPDFに基づいています。これはあなたが試すことができるコマンドです:
pdftotext \
-f 13 \
-l 17 \
-layout \
-opw supersecret \
-upw secret \
-eol unix \
-nopgbrk \
/path/to/your/pdf
- |less
これにより、ページ範囲13(f最初のページ)から17(lastページ)、PDFファイル(ユーザーと所有者のパスワードsecretおよびsupersecret)、Unix EOL規則を使用しますが、PDFページの間にページ区切りを挿入せず、パイプスルーを少なくします...
pdftotext -h
は、使用可能なすべてのコマンドラインオプションを表示します。
もちろん、両方のツールは、PDFのテキスト部分に対してのみ機能します(ある場合)。ああ、数式もうまく機能しません... ;-)
pdftotext
更新:
Popplerのpdftotext
の最近のバージョンには、OPが要求したように "PDFの一部(座標を使用)"ページを抽出するオプションがあります。パラメーターは次のとおりです。
-x <int>
:作物領域の左上隅のx座標-y <int>
:作物領域の左上隅のy座標-W <int>
:トリミング領域の幅(ピクセル単位)(デフォルトは0)-H <int>
:ピクセル単位のトリミング領域の高さ(デフォルトは0)-layout
パラメーターと共に使用する場合に最適です。
mutool draw
コマンドもテキストを抽出できますクロスプラットフォームのオープンソース MuPDF アプリケーション(Ghostscriptも開発している同じ会社が作成)には、コマンドラインツールmutool
がバンドルされています。このツールでPDFからテキストを抽出するには、次を使用します。
mutool draw -F txt the.pdf
抽出されたテキストを<stdout>
に出力します。 -o filename.txt
を使用して、ファイルに書き込みます。
[〜#〜] tet [〜#〜] 、 pdflib からのテキスト抽出ツールキット=製品ファミリは、テキストコンテンツのxy座標をPDFファイル(およびその他))で見つけることができます。TETにはコマンドラインインターフェイスがあり、すべてのテキスト抽出ツールの中で最も強力ですm(リガチャーも処理できます...)彼らのウェブサイトからの引用:
Geometry
TETは、ページ上の位置、グリフの幅、テキストの方向など、テキストの正確なメトリックを提供します。ページ上の特定の領域を除外したり、テキスト抽出に含めることができます。ヘッダーとフッターまたはマージンを無視します。
私の経験では、想像できる最も単純なCLIインターフェースを備えていませんが、慣れると、約束されたとおりに動作します。
また、さらに多くのオプションがあります。
podofotxtextract
(CLIツール)PoDoFoプロジェクト(オープンソース)calibre
(通常、eBookを処理するためのGUIプログラム、オープンソース)には、PDFからテキストを抽出できるコマンドラインオプションがあります。AbiWord
(GUIワープロ、オープンソース)はPDFをインポートし、ファイルを.txtとして保存できます:abiword --to=txt --to-name=output.txt input.pdf
Debenu Quick PDF Library ページ上の定義された領域からテキストを抽出できます。 SetTextExtractionArea 関数を使用すると、xおよびy座標を指定できます領域の幅と高さも指定できます。
次に、この直後に GetPageText 関数を呼び出して、定義された領域からテキストを抽出できます。
C#を使用した例を次に示します(ただし、ライブラリはマルチプラットフォームであり、さまざまなプログラミング言語で使用できます)。
DPL.LoadFromFile(@"Sample.pdf", "");
DPL.SetOrigin(1); // Sets 0,0 coordinate position to top left of page, default is bottom left
DPL.SetTextExtractionArea(35, 35, 229, 30); // Left, Top, Width, Height
string ExtractedContent = DPL.GetPageText(8);
Console.WriteLine(ExtractedContent);
GetPageTextを使用すると、その領域にあるテキストまたはその領域にあるテキストだけでなく、名前、色、サイズなどのテキストのフォントに関する情報を返すこともできます。