Тика возвращает неправильную строку текста для PDF с большим количеством таблиц - PullRequest
2 голосов
/ 15 августа 2011

Я использую tika для извлечения текста из pdf-файла с большим количеством таблиц.

java -jar tika-app-0.9.jar -t https://s3.amazonaws.com/centraldoc/alg1.pdf

Он возвращает недопустимый текст, а иногда обрезает пробел между двумя словами;например, он возвращает «qu inakli fmyat математические идеи в реальный мир» вместо «Связать математические идеи с реальным миром».

Есть ли способ минимизировать ошибки такого рода?или есть другая библиотека, которую я могу использовать?Имеет ли смысл использовать OCR для обработки таких PDF-файлов?

Ответы [ 2 ]

2 голосов
/ 17 октября 2018

Чтобы текст из PDF отображался в правильном порядке, мне пришлось установить для флага SortByPosition значение true ... (tika-app-1.19.jar)

                    BodyContentHandler handler   = new BodyContentHandler();
                    Metadata           metadata  = new Metadata();
                    ParseContext       context   = new ParseContext();
                    PDFParser          pdfParser = new PDFParser();

                    PDFParserConfig config = pdfParser.getPDFParserConfig();
                    config.setSortByPosition(true); // needed for text in correct order
                    pdfParser.setPDFParserConfig(config);

                    pdfParser.parse(is, handler, metadata, context);
1 голос
/ 16 августа 2011

Попробуйте управлять порядком при использовании парсера PDFBox: PDFTextStripper имеет флаг, который контролирует порядок строк в документе. По умолчанию (в PDFBox) для повышения производительности установлено значение false (порядок не сохраняется), но Tika меняла свое поведение между выпусками, включая и отключая этот флаг.

Подробнее об этой проблеме читайте в моем блоге Извлечение текста из файлов PDF с помощью Apache Tika 0.9 (и PDFBox под капотом) .

...