私は大きなpdf(スキャンされていない/ラスタライズされたpdf)ファイルからapache tikaを使用してテキストを抽出しようとしています。Apache Tikaは大規模なpdfからフルテキストの内容を抽出できませんでした
しかし、元のテキスト(pdfから)と抽出されたテキストを比較してテキストを抽出した後、多くのテキストコンテンツが見つからないことがわかりました。私はsetMaxStringLength(-1)
とBodyContentHandler(-1)
を使って出力を最大化しようとしました。しかし、それでもPDFファイルからフルテキストコンテンツを抽出することはできません。
以下は、私が試した2つのサンプルです。
サンプル:1
public class Extract
{
public static void main(String[] args) throws IOException, SAXException, TikaException
{
File file = new File("1.pdf");
//Instantiating Tika facade class
Tika tika = new Tika();
tika.setMaxStringLength(-1);
String filecontent = tika.parseToString(file);
System.out.println("Extracted Content: " + filecontent);
}
}
サンプル:2
public class Extract
{
public static void main(String[] args) throws IOException, SAXException, TikaException
{
BodyContentHandler handler = new BodyContentHandler(-1); //-1 to allow parsing for unlimited character
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("1.pdf"));
ParseContext pcontext = new ParseContext();
//parsing the document using PDF parser
PDFParser pdfparser = new PDFParser();
pdfparser.parse(inputstream, handler, metadata,pcontext);
//getting the content of the document
System.out.println("Contents of the PDF :" + handler.toString());
//getting metadata of the document
System.out.println("Metadata of the PDF:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name+ " : " + metadata.get(name));
}
}
}
私は、PDFの最後のページからコンテンツを見ることができています。しかし、ランダムにたくさんのテキストがPDFから抜けている。
これは、単一またはごく少数のpdfsでのみ発生する場合は、そのpdfを分析のために共有してください。 – mkl
[Apache Tikaトラブルシューティング - PDFテキストの問題](https://wiki.apache.org/tika/Troubleshooting%20Tika#PDF_Text_Problems)の手順に従ってみましたか? – Gagravarr