将hOCR转换为HTML表格

时间:2015-06-24 14:45:13

标签: python html html-table tesseract hocr

我正在寻找在python中实现的工具或想法,将hOCR文件(由应用程序的tesseract生成)转换为html表。 这个想法是利用hOCR文件中的文本位置信息(在bbox属性中提供)来创建基于所提供位置的表。 我提供了一个解释上述想法的例子:

我使用SlideShare.net中的image作为我的应用程序的输入,使用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表。预期的表格应该类似于this table

表格单元格的大小和位置反映了hOCR文件中提供的信息。

图片来源:slideshare.net

2 个答案:

答案 0 :(得分:2)

检查this document。我相信它描述了你需要的很多(或全部)。 从介绍:

  

本文档描述了OCR各方面的表示   以类似XML的格式输出。也就是说,我们定义为一组标签   包含文本和其他标签,以及这些标签的属性   标签。但是,由于我们所代表的内容是格式化的   但是,我们实际上并没有使用新的XML   表示;而是将表示嵌入XHTML(或HTML)中   因为XHTML和XHTML处理已经定义了OCR的许多方面   输出表示,否则需要额外的,单独的   和临时定义。

XML也可以是converted to HTML using XSLT。事实上,有a project which plans to do just that

此外,this project (hocr-tools)可能有所帮助。

最后请注意FAQ of Tesseract提及:

  

使用配置文件'hocr'tesseract将产生xhtml输出   符合特定规范

答案 1 :(得分:-1)

以下是如何将带有现有工具的特定文件转换为表格的原因(原始问题可能为时已晚):

  1. 将hocr文件与图像文件一起使用,并从hocr-tools repo创建一个带hocr-pdf的pdf,请参阅https://github.com/tmbdev/hocr-tools#hocr-pdf
  2. 使用tabula https://github.com/tabulapdf/tabula从pdf中提取表格数据
  3. 将CSV数据转换为HTML表格(应该有大量工具用于此任务)
  4. 仅需要第一步,因为tabula仅适用于pdf。第二步是IMO从视觉信息中提取表数据的主要挑战,当您想要获得有关算法方法的一些想法时,检查那里的细节可能也很有趣。