4

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

私がこれまでに見つけた最善のアプローチは、ほぼ有効なxml出力を解析するスクリプトを作成することです(コメントは無効で、多くの文字がさまざまな方法でエスケープされ、éは[[[e9]]]éになり、$は\になります$、%はコマンドラインpdftoipeユーティリティ(ipeというプログラムのpdfファイルを変換するため)の\%...)になります。これにより、各ページでの位置を示すテキスト要素が得られます[以下のサンプルを参照]。これで十分に機能します。気になるすべてのページの同じ場所に同じ値があるが、マトリックス[クロスタブ]pdfファイルをインポートするために追加のスクリプト作業が必要になるレポートの場合。pdftoipeはこれを目的としたものではなく、せいぜいcygwinforWindowsを使用して手動でコンパイルできます。

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

このサンプルの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>
4

4 に答える 4

3

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

于 2008-08-25T03:48:40.640 に答える
1

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

于 2008-09-07T05:40:18.717 に答える
1

pdftohtml-xml

pdftoipe はより詳細に見えますが!!

于 2010-11-12T22:41:47.483 に答える
0

Asposeをご覧になりましたか?ASP.net アプリに使用しており、それを使用した vbscript の例もいくつか見ました。それも特に高価ではありません。

http://www.aspose.com/

于 2008-08-25T02:05:22.213 に答える