PDFをAcrobatReaderまたはその他のPDFビューアで開いたときに、問題なくテキストスニペットをコピーして貼り付けることができると思いますか?
プログラムでそのようなモンスターファイルからテキストを解析して抽出しようとする前に(200メガバイトのみであっても-巨大なテーブルの単純なテキストの場合、200000ページがない限り...)、私は次のように進めます:
- 最初にファイルを再蒸留してサニタイズしてみてください。
- さまざまなCLIツールを使用して、テキストを.txtファイルに抽出してみてください。
これはほんの数分です。これを行うためのRubyプログラムの作成は、確かに数時間、数日、または数週間の問題です(PDFファイル形式の内部に関する知識によって異なります...まだあまり経験がないようです)。
「2」の場合。動作します、あなたはすでに途中で終わっているかもしれません。それが機能する場合は、Rubyを使用してプログラムで実行することが、原則として解決できる作業であることもご存知でしょう。「2」の場合。動作しません。プログラムで達成するのは非常に難しいかもしれません。
'Monster.pdf'をサニタイズします。
Ghostscriptを使用することをお勧めします。アクセスできる場合は、AdobeAcrobatDistillerを使用することもできます。
gswin32c.exe ^
-o Monster-PDF-sanitized ^
-sDEVICE=pdfwrite ^
-f Monster.pdf
(入力と比較した場合、その1つのコマンドで出力PDFがどれだけ縮小されるのか興味があります。)
PDFからテキストを抽出します。
最初に試してみることをお勧めしますpdftotext.exe
(XPDFの人々から)。他にも、もう少し不便な方法がありますが、これですでに機能する可能性があります。
pdftotext.exe ^
-f 1 ^
-l 10 ^
-layout ^
-eol dos ^
-enc Latin1 ^
-nopgbrk ^
Monster-PDF-sanitized.pdf ^
first-10-pages-from-Monster-PDF-sanitized.txt
これにより、すべてのページが抽出されるわけではなく、1〜10ページのみが抽出されます(概念実証のために、まったく機能するかどうかを確認します)。すべてのページから抽出するには、-f 1 -l 10
パラメータを省略します。-enc ASCII7
パラメータを(またはUTF-8
、 )に変更して、エンコーディングを微調整する必要がある場合がありますUCS-2
。
これがすばやく簡単に機能しない場合(場合によっては、元のPDFの一部のフォントが「カスタムエンコーディングベクトル」を使用しているため)、これまでの調査結果の詳細を説明する新しい質問をする必要があります。次に、問題を解決するために、より大きな口径に頼る必要があります。