使用Tesseract hOCR提取文本属性

时间:2013-11-16 09:18:47

标签: java svg fonts ocr tesseract

我正在使用Tesseract(在Windows上)从科学图表中提取文本,例如情节,其中有许多孤立的单词或数字,但没有句子或段落。然后我将HTML转换为SVG。除了我无法获得

之外,这很有效
  • 字体大小
  • 字体家庭
  • 文本锚点的xy坐标
  • 文本方向(例如,用于标记图形轴的旋转Math.PI / 2)

我可以从边界框中获得粗略的字体大小,但这取决于字符是否具有上升或下降。因此,下面的所有行(在hOCR输出中)具有相同的字体系列和大小:

<span class='ocrx_word' id='word_6' title="bbox 1177 491 1637 549">Herpetotherinae</span> 
<span class='ocrx_word' id='word_13' title="bbox 1183 1179 1514 1228">Cathartidae</span>
<span class='ocrx_word' id='word_35' title="bbox 1847 1742 1907 2077">Accipitridae</span> 

span_1有一个下行符(在“p”中)和一个bbox y高度为58,而span_2的bbox高度为49(没有下行符),span_3的bbox x-width为60,表示文本已旋转。但是,bbox本身不足以准确定位文本或确定文本方向。

我想使用Tess4J并使用任何可以获得这些属性的API。

如果有人已经从Tess4J写过SVG输出,我将不胜感激。 (我的任何代码都是F / OSS)。

1 个答案:

答案 0 :(得分:4)

默认情况下,字体信息不包含在hOCR输出中,但如果需要,它可用。您可以通过将以下行添加到lib.mainmenu = HMENU ...{ 1 = TMENU ... 2 = TMENU } # so just two levels lib.tempmenu <. lib.mainmenu # just save your menu [PIDinRootline = xxx] #or [globalVar = TSFE:id=xxx] lib.mainmenu <. lib.tempmenu lib.mainmenu.3 = TMENU # just add 3d submenu. Prev menu haven't it [global] 配置文件(或您正在使用的配置文件中)来启用它:

hocr

也可以在命令行上使用相同的配置变量(或者,可能是通过Tess4J包装器)。

启用此功能后,字体名称和大小将包含在输出中,例如

hocr_font_info 1

<span class='ocrx_word' id='word_3_21' title='bbox 946 1267 1121 1297; x_wconf 91; x_font Courier_New; x_fsize 9' dir='ltr'>without</span> 是字体名称Courier_New x_font是以磅为单位的字体大小,即9

字体名称以及x_fsize<strong>标记都会显示粗体和斜体。