PDFファイルからデータをインポート/読み取る最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/25550

  •  09-06-2019
  •  | 
  •  

質問

さまざまな形式のpdfファイルでクライアントから大量のデータを取得します(レイアウトごと)。これらのファイルは通常レポート出力であり、通常は適切に注釈が付けられます[通常OCRは必要ありません]単に数百ページのテキストをacrobatからコピーするだけでは機能しません。

これまでに見つけた最善のアプローチは、ほぼ有効なxml出力を解析するスクリプトを記述することです(コメントは無効であり、多くの文字がさまざまな方法でエスケープされます。éは[[[e9]]]éになり、 $は\ $になり、%は\%...になります)コマンドラインpdftoipeユーティリティ( ipe )、各ページの位置を含むテキスト要素を提供します(下のサンプルを参照)。これは、関心のあるすべてのページの同じ場所に同じ値があるレポートに十分機能します。ただし、マトリックス[クロスタブ] pdfファイルをインポートするには、追加のスクリプト作業が必要になります。 pdftoipeはこれをまったく意図しておらず、せいぜいcygwin for windowsを使用して手動でコンパイルできます。

許容できるスクリプト言語からこれを簡単にするライブラリはありますか?グラフィカルツールも素晴らしいでしょう。そしてポニー。

このサンプルのpdftoipe出力次のようになります。

<ipe creator="pdftoipe 2006/10/09"><info media="0 0 612 792"/>
<-- Page: 1 1 -->
<page gridsize="8">
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 181.8 707.88">This is a sample PDF fil</text>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 356.28 707.88">e.</text>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 368.76 707.88"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 692.4"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 677.88"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 663.36"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 648.84"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 634.32"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 619.8"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 605.28"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 590.76"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 576.24"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 561.72"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 547.2"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 532.68"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 518.16"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 503.64"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 489.12"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 474.6"> </text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 67.32 456.24">If you can read this</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 214.92 456.24">,</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 219.48 456.24"> you already have A</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 370.8 456.24">dobe Acrobat </text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 67.32 437.64">Reader i</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 131.28 437.64">n</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 141.12 437.64">stalled on your computer.</text>
<text stroke="0 0 0" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 337.92 437.64"> </text>
<text stroke="0 0.502 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 342.48 437.64"> </text>
<image width="800" height="600" rect="-92.04 800.64 374.4 449.76" ColorSpace="DeviceRGB" BitsPerComponent="8" Filter="DCTDecode" length="369925">
feedcafebabe...
</image>
</page>
</ipe>
役に立ちましたか?

解決

アプリケーションの1つで Xpdf を使用します。主にpdfレンダリングに使用されるC ++ライブラリですが、このプロジェクトに役立つテキスト抽出機能があります。

他のヒント

外部からの呼び出しに問題がない場合は、 ghostscript を使用できます-ディストリビューションに含まれているps2asciiスクリプトを見てください。グラフィカルツールに何が欲しいのかわかりません。大きなボタンを押して入力ファイルと出力ファイルを選択しますか?プレビュー?必要に応じて、GSViewを使用できる場合があります。

pdftohtml -xml

pdftoipeの方が詳細に見えますが!!

Asposeを見ましたか? ASP.netアプリに使用していますが、vbscriptの使用例もいくつか見ました。それほど高価でもありません。

http://www.aspose.com/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top