0
PDFTextStripper stripper = new PDFText2HTML(encoding);
String result = stripper.getText(document).trim();

結果には次のようなものが含まれます

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd"> <html><head><title>Inserat
 SeLe EE rev</title> <meta http-equiv="Content-Type"
 content="text/html; charset=utf-8"> </head> <body> <div
 style="page-break-before:always;
 page-break-after:always"><div><p>&#0;&#1;&#2;&#3;&#4;&#5;&#6;&#7;&#...

それ以外の

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd"> <html><head><title>Inserat
 SeLe EE rev</title> <meta http-equiv="Content-Type"
 content="text/html; charset=utf-8"> </head> <body> <div
 style="page-break-before:always; page-break-after:always"><div><p>any
 blablabla characters...

エンコーディングを windows-1252 または utf-8 に変更しても結果は変わりません。不正な pdf の URL http://www.permaco.ch/fileadmin/user_upload/jobs/Inserat_SeLe_EE_rev.pdf

このpdfを解析するには?

4

1 に答える 1

3

このpdfを解析するには?

それをOCRすることを除いて、あなたはそうしません。

問題の PDF には、追加のライブラリとコードを必要とする OCR (グリフから文字へのマッピングを見つけるために使用されるフォントの各文字を少なくとも OCR する) を行わずにテキストを抽出するために必要な情報が含まれていません。

テキスト抽出の要件として、PDF 仕様ISO 32000-1:2008はセクション 9.10.2 で、抽出するテキストに使用されるフォントが必要であると正しく述べています。

  • ToUnicode CMapが含まれているか— ドキュメントで使用されているフォントは含まれていません —</li>
  • または、表 118 にリストされている定義済みの CMaps のいずれかを使用する複合フォント (Identity-H および Identity-V を除く)、またはその子孫 CIDFont が Adob​​e-GB1、Adobe-CNS1、Adobe-Japan1、または Adob​​e-Korea1 文字コレクションを使用する複合フォントである— ドキュメントで使用されているフォントは —</li>
  • または、事前定義されたエンコーディングMacRomanEncoding、MacExpertEncoding、またはWinAnsiEncoding のいずれかを使用する単純なフォントであるか、アドビ標準ラテン文字セットおよび Symbol フォントの名前付き文字セットから取得された文字名のみを含むDifferences配列のエンコーディングを持つ単純なフォントである—ドキュメントで使用されているフォントは、これらの事前定義されたエンコーディングのいずれも使用しておらず、言及されている選択からの違い配列の文字名も使用していません: 使用されている名前は/0/1、...、/155です。

通常、Adobe Reader のコードには多くのテキスト抽出の経験があるため、最初のテストとして、Adobe Reader を使用してテキストをコピーして貼り付けてみることをお勧めします。そうしようとすると、ゴミしか得られないことがわかります。

于 2013-07-15T10:13:30.010 に答える