将 HOCR 输出转换为字符串(用于正则表达式)的策略是啥?

Posted

技术标签:

【中文标题】将 HOCR 输出转换为字符串(用于正则表达式)的策略是啥?【英文标题】:What are the strategies to convert an HOCR output to a string (for regex purposes)?将 HOCR 输出转换为字符串(用于正则表达式)的策略是什么? 【发布时间】:2019-12-17 09:20:52 【问题描述】:

我正在使用 Pytesseract 并希望将 HOCR 输出转换为字符串。当然,这样的功能是在 Pytesseract 中实现的,但我想了解更多关于完成它的可能策略 thx

from pytesseract import image_to_pdf_or_hocr
hocr_output = image_to_pdf_or_hocr(image, extension='hocr')

【问题讨论】:

【参考方案1】:

由于hOCR 是一种.xml,我们可以使用.xml 解析器。

但首先我们需要将 tesseract 的二进制输出转换为 str:

from pytesseract import image_to_pdf_or_hocr

hocr_output = image_to_pdf_or_hocr(image, extension='hocr')
hocr = hocr_output.decode('utf-8')

现在我们可以使用xml.etree 来解析它:

import xml.etree.ElementTree as ET

root = ET.fromstring(hocr)

xml.etree 为我们提供了一个text iterator,我们可以将其结果连接到一个字符串中:

text = ''.join(root.itertext())

【讨论】:

以上是关于将 HOCR 输出转换为字符串(用于正则表达式)的策略是啥?的主要内容,如果未能解决你的问题,请参考以下文章

HOCR 到 HTML 用于可视化

将 hOCR 转换为 HTML 表格

正则表达式,用于验证不同格式的字符串,用于特殊时间转换[重复]

正则表达式 - 将 HTML 转换为有效的 XML 标记 [重复]

复杂的正则表达式 - 在Powershell中工作,而不是在Bash中工作

如何将 Java 字符串转换为模式正则表达式?