Как сегментировать документ с помощью Tesseract, а затем выводить полученные ограничивающие поля и метки

Я пытаюсь заставить Tesseract выводить файл с помеченными ограничивающими полями, которые являются результатом сегментации страницы (pre OCR). Я знаю, что он должен быть способен сделать это "из коробки" из-за результатов, показанных на соревнованиях ICDAR, где участники должны были сегментировать и различные документы (академическая статья здесь). Вот пример из этой статьи, иллюстрирующий то, что я хочу создать: Image of segmented and labelled output

Я построил последнюю версию tesseract, используя brew, brew install tesseract --HEAD, и пытался редактировать файлы конфигурации, расположенные в /usr/local/Cellar/tesseract/HEAD/share/tessdata/configs/, для вывода помеченных ящиков. Выход, полученный с помощью hocr в качестве конфигурации, то есть

tesseract infile.tiff outfile_stem -l eng -psm 1 hocr

дает ограничивающий прямоугольник для всего и имеет некоторую маркировку в тегах class, например.

<p class='ocr_par' dir='ltr' id='par_5_82' title="bbox 2194 4490 3842 4589">
    <span class='ocr_line' id='line_5_142' ...

но я не могу это представить. Есть ли стандартный инструмент для визуализации файлов hOCR или средство для создания выходного файла с ограничивающими прямоугольниками, встроенными в Tesseract?

Текущая версия главы:

tesseract 3.04.00
 leptonica-1.71
  libjpeg 8d : libpng 1.6.16 : libtiff 4.0.3 : zlib 1.2.5

Изменить

Я действительно хочу добиться этого, используя инструмент командной строки (как в примерах выше). @nguyenq указал мне на ссылку API, к сожалению, у меня нет опыта на С++. Если единственным решением является использование API, вы можете предоставить быстрый пример python?

Ответы

Ответ 1

Успех. Большое спасибо людям из Лаборатории исследований распознавания образов и анализа изображений (PRImA) для создания инструментов для обработки этого. Вы можете бесплатно их получить на своем сайте или github,

Ниже я даю полное решение для Mac, работающего 10.10, и с помощью диспетчера пакетов homebrew. Я использую wine для запуска исполняемых файлов Windows.

Обзор

  • Инструменты загрузки: Tesseract OCR на страницу (TPT) и Просмотр страниц (PVT)
  • Используйте TPT для запуска tesseract на вашем документе и конвертирования HOCR xml в xml-страницу PAGE
  • Используйте PVT для просмотра исходного изображения с наложенной информацией xml на странице

код

brew install wine  # takes a little while >10m
brew install gs    # only for generating a tif example. Not required, you can use Preview
brew install wget  # only for downloading example paper. Not required, you can do so manually!
cd ~/Downloads
wget -O paper.pdf "http://www.prima.cse.salford.ac.uk/www/assets/papers/ICDAR2013_Antonacopoulos_HNLA2013.pdf"
# This command can be ommitted and you can do the conversion to tiff with Preview
gs                          \
  -o paper-%d.tif           \
  -sDEVICE=tiff24nc         \
  -r300x300                 \
   paper.pdf 

cd ~/Downloads
# ttptool is the location you downloaded the Tesseract to PAGE tool to
ttptool="/Users/Me/Project/tools/TesseractToPAGE 1.3"
# sudo chmod 777 "$ttptool/bin/PRImA_Tesseract-1-3-78.exe"
touch "$ttptool/log.txt"
wine "$ttptool/bin/PRImA_Tesseract-1-3-78.exe"   \
  -inp-img "$dl/Downloads/paper-3.tif"           \
  -out-xml "$dl/Downloads/paper-3-tool.xml"      \
  -rec-mode layout>>log.txt

# pvtool is the location you downloaded the PAGE Viewer tool to
pvtool="/Users/Me/Project/tools/PAGEViewerMacOS_1.1/JPageViewer 1.1 (Mac OS, 64 bit)"
cd "$pvtool"
dl=~
java -XstartOnFirstThread -jar JPageViewer.jar "$dl/Downloads/paper-3-tool.xml" "$dl/Downloads/paper-3.tif"

Результаты

Документ с оверлеями (опрокидывание для просмотра текста и типа) Doc with overlays Оверлей один (используйте кнопки GUI для переключения) Overlays alone

Приложение

Вы можете запустить tesseract самостоятельно и использовать другой инструмент для преобразования его вывода в формат PAGE. Я не смог заставить это работать, но я уверен, что с вами все будет в порядке!

# Note that the pvtool does take as input HOCR xml but it ignores the region type
brew install tesseract --devel  # installs v 3.03 at time of writing
tesseract ~/Downloads/paper-3.tif ~/Downloads/paper-3 hocr
mv paper-3.hocr paper-3.xml  # The page viewer will only open XML files
java -XstartOnFirstThread -jar JPageViewer.jar "$dl/Downloads/paper-3.xml"

На этом этапе вам нужно использовать PAGE Converter Java Tool, чтобы преобразовать HOCR xml в xml. Это должно выглядеть примерно так:

pctool="/Users/Me/Project/tools/JPageConverter 1.0"
java -jar "$pctool/PageConverter.jar" -source-xml paper-3.xml -target-xml paper-3-hocrconvert.xml -convert-to LATEST

К сожалению, я продолжал получать нулевые указатели.

Could not convert to target XML schema format.
java.lang.NullPointerException
    at org.primaresearch.dla.page.converter.PageConverter.run(PageConverter.java:126)
    at org.primaresearch.dla.page.converter.PageConverter.main(PageConverter.java:65)
Could not save target PAGE XML file: paper-3-hocrconvert.xml
java.lang.NullPointerException
    at org.primaresearch.dla.page.io.xml.XmlInputOutput.writePage(XmlInputOutput.java:144)
    at org.primaresearch.dla.page.converter.PageConverter.run(PageConverter.java:135)
    at org.primaresearch.dla.page.converter.PageConverter.main(PageConverter.java:65)

Ответ 2

Вы можете использовать свой API для получения ограничивающих полей на разных уровнях (символ/слово/строка/пара) - см. Пример API. Вы должны сами нарисовать ярлыки.

Ответ 3

Shortcut

Также можно открыть файлы HOCR непосредственно с помощью инструмента PageViewer. Однако расширение файла должно быть .xml.

Ответ 4

С помощью Tesseract 4.0.0 команда типа tesseract source/dir/myimage.tiff target/directory/basefilename hocr создаст файл basefilename.hocr с ограничивающими полями блока, абзаца, строки и слова для текста OCR. Даже команда без конфигурации hocr создает текстовый файл с символами новой строки между текстовым текстом блока, но формат hocr более явный.

Дополнительные параметры конфигурации здесь: https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs

Ответ 5

Самый простой способ иметь файл HOCR с индивидуальным уровнем символов - использовать вилку nickjwhite для Tesseract 3.05: https://github.com/nickjwhite/tesseract/tree/hocrcharboxes p >

Скомпилируйте и загрузите файлы tessdata, следуя wiki Tesseract. После проверки установки используйте:

tesseract {image file} -c tessedit_create_hocr=1 -c hocr_char_boxes=1 {output name}

и tadam!