0

ItextSharp を使用して四角形からテキストを抽出しようとしていますが、一部の特定の領域を除いて、ドキュメント内のほぼすべてのセクションで正常に機能します。これらの領域は、シンプルな太字のタイトルと、ドキュメントの残りの部分よりもわずかに小さいフォント (両方とも大文字) のシンプルなコンテンツです。これらの領域では、正しい単語ではなく、選択したテキストのアナグラムを取得します。

たとえば、「RELEASE」という単語は「ERLEASE」、「VOYAGE」は「EGAYVO」、「FURTHER CHARGES」という文は「FHTRU ER CHAGRES」となります。

奇妙なことに、 でページ全体を表示しようとするとSimpleTextExtractionStrategy、正しいテキストが得られます。

PDFのフォントは古典的なArialであり、抽出に使用した戦略はStackOverflowから取得されます(引数によって渡されます):

    _pdfRd = New PdfReader(_pdfPath)
    Dim output As String()
    Dim nrPag as Integer = 1
    Dim filter As RenderFilter = New RegionTextRenderFilter(rect)
    Dim strategy As FilteredRenderListener
    Dim locStrategy As New LocationTextExtractionStrategy
    strategy = New FilteredTextRenderListener(locStrategy, {filter})
    output = GetTextFromPage(_pdfRd, nrPag, strategy).Split(vbLf)
    _pdfRd.Close()

他のドキュメントで試してみましたが、非常にうまく機能します。別のドキュメントでこの問題を再現することはできません。

私は自分のコードが心配で、この戦略も試しました: http://www.schiffhauer.com/read-text-in-a-pdf-in-c-with-itextsharp/ しかし、結果は同じです。

読み取りプロセスで何かが欠けていますか、それとも私の pdf に関連する問題ですか?

更新: 誤った単語の 1 文字を選択すると、出力は空の文字列になります。これは、複数の文字を一緒に選択した場合にも発生し、単語全体を選択した場合にのみ (アナグラム) 出力を取得します。たとえば、「CARGO RELEASE」という単語があり、四角形で「GO」のみを選択するか、他の部分文字列を選択すると何も表示されませんが、「CARGO」を選択すると「GRACO ERLESAE」が取得され、 2 番目の単語は選択していません。最初の単語のみを選択しています。

4

1 に答える 1

0

SimpleTextExtractionStrategyページ全体ではなく長方形を使用するように、作業をカスタマイズしようとしましたか?

ここの ghitub プロジェクトで完全なコードを見つけることができます

于 2016-05-26T10:17:59.233 に答える