使用Tesseract hOCR提取文本属性

pet*_*ust 3 java ocr fonts svg 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> 
Run Code Online (Sandbox Code Playgroud)

span_1的降序(在“ p”中),bbox的y高度为58,而span_2的bbox的高度为49(无降序),而span_3的bbox的x宽度为60,表示文本已旋转。但是,bbox本身不足以准确定位文本或确定文本方向。

我想使用Tess4J并使用任何会导致获得这些属性的API。

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

Tom*_*ris 6

字体信息默认情况下不包含在hOCR输出中,但是如果需要,它是可用的。您可以通过将以下行添加到hocr配置文件(或您使用的任何配置文件)中来打开它:

hocr_font_info 1
Run Code Online (Sandbox Code Playgroud)

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

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

<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>
Run Code Online (Sandbox Code Playgroud)

x_font是字体名称Courier_New x_fsize是以磅 为单位的字体大小,即9

粗体和斜体将在字体名称中以及通过使用<strong><em>标记来指示。