2017-08-08 12 views
1

pdfbox 1.8.13に関する質問があります。私は1ページのPDF文書からテキスト全体を読み込もうとしています。 Adobe Readerは仕事をすることができますが、pdfboxはほとんどのページを読み取りますが、文書の最初の2行と文書の最後の2行をスクランブルして、文字を入れ替えます。2行の文字が入れ替わり、Adobe Readerで仕事をすることができます

誰もこのような問題を解決する方法を知っていますか?まず、どこで尋ねるのか、2番目に、私はあなたとPDFをどのように共有できますか?そして、第3に、問題がPDF2boxのバージョン2.0.7に存在するかどうかをチェックする可能性があります。実装する? (私は問題は同じであることを確認したPDFに

SVecramlaöbgleenCsavpeitrawlaltung GmbH UHSRtB-I2d1N7r7.7D8E,3A0m0t4s3g4e7ri7c4ht München Seite 1 von 1 
8P0ri5n3zr8egMeünntcehnesntr. 48 GEreikscPhoädftzsufwüheritu,nFglo: rian Prucker 

リンク:

ScalableCapitalHRB217778,AmtsgerichtMünchenSeite1von1 
VermögensverwaltungGmbHUSt-IdNr.DE300434774 
Prinzregentenstr. 
48Geschäftsführung:80538München 
ErikPodzuweit,FlorianPrucker 

pdfbox:

はあなたの助け ステファンのために事前に

のAdobe Readerをありがとう私がアップロードした変更されていないPDFと変更されたPDF):

https://wetransfer.com/downloads/5930649bce9a1d1a686a0da63f1b9bce20170808071518/9b9140

P .:私はまた、pdfbox 1.8.13でPDDocument.loadNonSeqバージョンを試しましたが、これも同じ問題を引き起こしました。

+1

PDFを共有ホストにアップロードしてからリンクを投稿してください、wikisend、ファイルドロッパーなど –

+1

ExtractTextコマンドラインアプリケーションでテストすることもできます。ダウンロードサイトからpdfbox-appをダウンロードするだけです。 –

+1

2.0.7では明らかに優れています。簡単なテキスト抽出のAPIは同じです。 –

答えて

1

@ tilman-hausherrありがとうございました。彼らと一緒に、私は自分の問題をデバッグすることができました。

ソートオプションを省略しても問題ありませんでした(私が今作業しているプロジェクトでなぜ以前に使用されたのか分かりません)、pdfbox-1.8.13でもスクランブリングの問題が解決されました。そして、あなたが正しいことは、pdfbox-2.0.7を使ったテキスト抽出結果がさらに良い結果をもたらしたということです。

私はpdfbox-1.8.13で使用していた関連するJavaコードの断片であった:

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.util.PDFTextStripper; 
... 
PDDocument doc = PDDocument.load(file); 
PDFTextStripper textStripper = new PDFTextStripper(); 
textStripper.setSortByPosition(true); 
String text = textStripper.getText(doc); 

私が正しく理解していれば、pdfbox-1.8.13からpdfbox-2.0.7に行く単純なテキストを抽出するためのAPIが同じではありませんが、非常によく似ました、 PDFTextStripperはちょうどtextutilから移動されました:

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.text.PDFTextStripper; 
... 
PDDocument doc = PDDocument.load(file); 
PDFTextStripper textStripper = new PDFTextStripper(); 
// textStripper.setSortByPosition(true); 
String text = textStripper.getText(doc); 

に関するすべてのこののを見つけるには、コマンドリットルを言ったようにINEツールは非常に有用だったと、ここでは異なるオプション(https://pdfbox.apache.org/1.8/commandline.htmlhttps://pdfbox.apache.org/2.0/commandline.html)とテキスト抽出の結果は以下のとおりです。

のjava -jar pdfboxアプリ-1.8.13.jar ExtractText -sort "20170801 Rechnung.pdf":

SVecramlaöbgleenCsavpeitrawl HRBPrinzregentenstra.l4tu8ng GmbH GUSest-I 
2d1N7r7.7D8E,3A0m0t4s3g4e7ri7c4ht München Seite 1 von 1 
80538 München ErikcPhoädftzsufwüheritu,nFglo: rian Prucker 

のjava -jar pdfboxアプリ-1.8.13.jar ExtractText "20170801 Rechnung.pdf":

Scalable CapitalVermögensverwaltung GmbHPrinzregentenstr. 4880538 München 
HRB 217778, Amtsgericht MünchenUSt-IdNr. DE300434774Geschäftsführung:Erik 
Podzuweit, Florian Prucker 
Seite 1 von 1 

のjava -jar pdfboxアプリ-2.0.7.jar ExtractText -sort」 20170801改訂。PDF ":

Scalable Capital HRB 217778, Amtsgericht München Seite 1 von 1 
Vermögensverwaltung GmbH USt-IdNr. DE300434774 
Prinzregentenstr. 48 Geschäftsführung: 
80538 München Erik Podzuweit, Florian Prucker 

のjava -jar pdfboxアプリ-2.0.7.jarのExtractText "20170801 Rechnung.pdf"

Scalable Capital 
Vermögensverwaltung GmbH 
Prinzregentenstr. 48 
80538 München 
HRB 217778, Amtsgericht München 
USt-IdNr. DE300434774 
Geschäftsführung: 
Erik Podzuweit, Florian Prucker 
Seite 1 von 1 

は、だから私はpdfbox-2.0.7は特になくて、このケースで素敵な結果を与えると思いますオプションの有無にかかわらず、pdfbox-1.8.3が同じ結果を出したので、-sortオプションを使用すると、アルゴリズムが異なる動作をする理由がわからなくても同じ結果が得られます。

+1

'sort'オプションを使った文書が良い考えではないことは事実かもしれませんが、この答えを読んでいる人は、そのオプションなしでは全く無意味な結果を出しているPDFがたくさんあることに気づかなければなりません。 – mkl

+0

これはなぜか、またはこの動作を修正/修正するようにPDFの作成者に依頼することができる理由を説明できますか? – stephanmunich

+0

*「これはなぜですか?」 - PDFは、元々はプラットフォーム間でドキュメントを同じように表示するためのフォーマットです。 *テキスト抽出*などの追加機能はオプションです。 * "この問題を修正する" * - これは困難です。なぜなら、動作が間違っていないからです。上記を参照してください。 * "この動作を変更する" * - タグ付けされたPDFを適切に作成するように作成者に依頼し、タグ付け情報に基づいてテキスト抽出を適用することができます。 – mkl

関連する問題