Как включить TesseractOCRParser с помощью TikaConfig и утилиты командной строки Tika?

Я установил apache Tika 1.8, и он работает отлично, за исключением того, что часть OCR не работает. У меня установлен Tesseract, и он также работает правильно. Когда я пытаюсь отправить PDF с изображением, я получаю следующее.

ВНИМАНИЕ: Tesseract OCR установлен и будет автоматически применяться к файлам изображений, если вы не исключили TesseractOCRParser из анализатора по умолчанию. Тессеракт может значительно замедлить извлечение контента (TIKA-2359). Начиная с версии Tika 1.15 (и предыдущих версий), Tesseract вызывается автоматически. В будущих версиях Tika пользователям может понадобиться включить TesseractOCRParser через TikaConfig.

Могу ли я настроить TikaConfig с помощью утилиты командной строки? Или я должен клонировать проект и обновить poms и перестроить. Я действительно не хочу этого делать.

Здесь есть некоторая информация о том, как использовать утилиту командной строки и TikaConfig, но я не могу понять, как включить с ней TesseractOCRParser.

Любая помощь, высоко ценится.

1 ответ

Решение

Итак, с помощью этого поста на форуме Apache Tika Спасибо, ребята.

Мне удалось заставить его работать. Это взломать, но это работает. Я извлек файл Jar-файла Tika-app. Затем найдите файл PDFParser.properties и измените следующие свойства следующим образом.

extractInlineImages true 
extractUniqueInlineImagesOnly false 
ocrStrategy ocr_and_text_extraction

Затем найдите TesseractOCRConfig.properties. И измените это свойство на 1..

enableImageProcessing=1

Сохраните вышеуказанные файлы свойств. Застегни все это снова. И используйте новый zar-файл в архиве, и теперь он будет извлекать текст и текст из изображений из PDF-файла.

Я попробовал подход user3250052, но мне не удалось повторно сжать файл jar так, чтобы он был исполняемым. Это из-за моей собственной неопытности с Java, но, тем не менее, менее хакерский способ - вызвать настраиваемый файл конфигурации tika при вызове tika:

java -jar tika-app.jar --config=tika-config.xml image.pdf

Вот как выглядит мой файл tika-config.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<properties>
  <!--for example: <mimeTypeRepository resource="/org/apache/tika/mime/tika-mimetypes.xml"/>-->
  <service-loader dynamic="true" loadErrorHandler="IGNORE"/>
  <encodingDetectors>
    <encodingDetector class="org.apache.tika.detect.DefaultEncodingDetector"/>
  </encodingDetectors>
  <translator class="org.apache.tika.language.translate.DefaultTranslator"/>
  <detectors>
    <detector class="org.apache.tika.detect.DefaultDetector"/>
  </detectors>
  <parsers>
    <parser class="org.apache.tika.parser.DefaultParser"/>
    <parser class="org.apache.tika.parser.pdf.PDFParser">
      <params>
        <param name="extractInlineImages" type="bool">true</param>
      </params>
    </parser>
  </parsers>
</properties>

Чтобы создать этот файл конфигурации, сначала я запустил:

java -jar tika-app.jar --dump-current-config

Это сбросит для вас конфигурацию по умолчанию. Я взял это и поместил в tika-config.xml и добавил:

<parser class="org.apache.tika.parser.pdf.PDFParser">
  <params>
    <param name="extractInlineImages" type="bool">true</param>
  </params>
</parser>

который я почерпнул из https://cwiki.apache.org/confluence/display/tika/PDFParser%20(Apache%20PDFBox) (вариант 1).

Несмотря на то, что tesseract включен по умолчанию (поэтому OCR будет работать с файлами изображений из коробки), PDF-файлы не распознаются без установки этого параметра, потому что, как указано в приведенной выше ссылке, "по умолчанию извлечение встроенных изображений отключено, потому что некоторые редкие PDF-файлы содержат тысячи встроенных изображений на страницу, и это сильно сказывается на производительности, как использовании памяти, так и времени ".

Теперь все (OCR для файлов изображений, OCR изображений в PDF-файлах или PDF-файлах на основе изображений, а также, естественно, извлечение текста из текстовых PDF-файлов) работает с java-приложением tika. Я нашел много документации о том, как заставить это работать на java server tika, но очень мало на java app tika, поэтому я надеюсь, что это сэкономит кому-то несколько часов, которые потребовались мне, чтобы понять это (дайте мне знать).

Я бы рекомендовал использовать ocrStrategy auto

Это пытается извлечь, а затем возвращается к OCR

Другие вопросы по тегам