Конвертировать hOCR в HTML таблицу

Я ищу инструмент или идею, которая будет реализована в Python, который преобразует файл hOCR (генерируется tesseract в приложении) в HTML-таблицу. Идея состоит в том, чтобы использовать текстовую информацию о местоположении в файле hOCR (предоставленную в атрибуте bbox), чтобы создать таблицу на основе предоставленного местоположения. Я привожу пример, объясняющий вышеупомянутую идею:

Я использовал это изображение из SlideShare.net в качестве входных данных для моего приложения, которое использует tesseract, и я получил приведенный ниже файл hOCR/xml в качестве выходных данных.

файл hOCR:

  <div class='ocr_page' id='page_2' title='image "sample_slide.jpg"; bbox 0 0 638 479; ppageno 1'>
   <div class='ocr_carea' id='block_1_1' title="bbox 0 0 638 479">
    <p class='ocr_par' dir='ltr' id='par_1' title="bbox 31 104 620 439">
     <span class='ocr_line' id='line_1' title="bbox 32 104 613 138"><span class='ocrx_word' id='word_1' title="bbox 32 105 119 131">done:</span> <span class='ocrx_word' id='word_2' title="bbox 132 104 262 138">working</span> <span class='ocrx_word' id='word_3' title="bbox 273 105 405 138">product,</span> <span class='ocrx_word' id='word_4' title="bbox 419 104 517 132">hotels</span> <span class='ocrx_word' id='word_5' title="bbox 528 104 613 132">listed</span> 
     </span>
     <span class='ocr_line' id='line_2' title="bbox 31 160 471 194"><span class='ocrx_word' id='word_6' title="bbox 31 164 62 187">to</span> <span class='ocrx_word' id='word_7' title="bbox 75 161 122 187">do:</span> <span class='ocrx_word' id='word_8' title="bbox 134 164 227 187">smart</span> <span class='ocrx_word' id='word_9' title="bbox 236 160 330 187">traffic</span> <span class='ocrx_word' id='word_10' title="bbox 342 160 471 194">building</span> 
     </span>
     <span class='ocr_line' id='line_3' title="bbox 32 243 284 280"><span class='ocrx_word' id='word_11' title="bbox 32 243 128 280">seed</span> <span class='ocrx_word' id='word_12' title="bbox 148 243 284 280">round:</span> 
     </span>
     <span class='ocr_line' id='line_4' title="bbox 71 316 619 361"><span class='ocrx_word' id='word_13' title="bbox 71 321 156 356">CEO</span> <span class='ocrx_word' id='word_14' title="bbox 171 319 240 355">will</span> <span class='ocrx_word' id='word_15' title="bbox 260 321 384 356">invest</span> <span class='ocrx_word' id='word_16' title="bbox 517 316 619 361">$30k</span> 
     </span>
     <span class='ocr_line' id='line_5' title="bbox 75 392 620 439"><span class='ocrx_word' id='word_17' title="bbox 75 397 252 433">investor</span> <span class='ocrx_word' id='word_18' title="bbox 489 392 620 439">$120k</span> 
     </span>
    </p>
   </div>
  </div>

Что мне нужно, это преобразовать файл hOCR в HTML-таблицу на основе местоположения следующего. Предполагаемая таблица должна выглядеть примерно так:

Размер и расположение ячеек таблицы отражают информацию, представленную в файле hOCR.

Источник изображения: slideshare.net

2 ответа

Проверьте этот документ. Я считаю, что это описывает многое (или все) из того, что вам нужно. Из введения:

Этот документ описывает представление различных аспектов вывода OCR в XML-подобном формате. То есть мы определяем как набор тегов, содержащих текст и другие теги, вместе с атрибутами этих тегов. Тем не менее, поскольку содержимое, которое мы представляем, является форматированным текстом, тем не менее, мы фактически не используем новый XML для представления; вместо этого вставьте представление в XHTML (или HTML), потому что обработка XHTML и XHTML уже определяет многие аспекты выходного представления OCR, которые в противном случае потребовали бы дополнительных, отдельных и специальных определений.

XML также может быть преобразован в HTML с помощью XSLT. На самом деле, есть проект, который планирует сделать именно это.

Также этот проект (hocr-tools) может помочь.

В заключение отметим, что в FAQ Тессеракта упоминается следующее:

С помощью конфигурационного файла 'hocr' tesseract выдаст вывод xhtml, соответствующий спецификации hocr

Вот идея, как преобразовать файл hocr с некоторыми существующими инструментами в таблицу (также может быть слишком поздно для исходного вопроса):

  1. Возьмите файл hocr вместе с файлом изображения и создайте PDF с hocr-pdf из репозитория hocr-tools см. https://github.com/tmbdev/hocr-tools
  2. Используйте таблицу https://github.com/tabulapdf/tabula для извлечения данных таблицы из PDF
  3. Преобразовать данные CSV в таблицу HTML (для этой задачи должно быть много инструментов)

Первый шаг необходим только потому, что tabula работает только с PDF-файлами. Второй шаг - IMO - главная задача для извлечения табличных данных из визуальной информации, и также может быть интересно проверить детали там, когда вы хотите получить некоторые идеи об алгоритмических подходах.

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