获取方向pytesseract Python3

Posted

技术标签:

【中文标题】获取方向pytesseract Python3【英文标题】:Get orientation pytesseract Python3 【发布时间】:2019-01-20 05:41:11 【问题描述】:

我想获取扫描文档的方向。我看到这篇帖子Pytesseract OCR multiple config options 并尝试使用--psm 0 来获取方向。

target = pytesseract.image_to_string(text, lang='eng', boxes=False, \
config='--psm 0 tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyz')

但我得到一个错误:

FileNotFoundError: [Errno 2] No such file or directory: '/var/folders/jy/np7p4twj4bx_k396hyc_bnxw0000gn/T/tess_dzgtpadd_out.txt'

【问题讨论】:

【参考方案1】:

我找到了另一种使用 pytesseract 获取方向的方法:

print(pytesseract.image_to_osd(Image.open(file_name)))

这是输出:

Page number: 0
Orientation in degrees: 270
Rotate: 90
Orientation confidence: 21.27
Script: Latin
Script confidence: 4.14

【讨论】:

它可以检测脚本或字体吗?如果文档包含不同的字体怎么办? 这是一个很好的解决方案,但发现不是很准确。在我对 9 个旋转(右、左、下)PNG 文档页面进行的一个小型实验中,它仅在 6 个上正确检测到旋转。【参考方案2】:

不要编写 regex 从字符串中获取输出,而是传递参数 Output.DICT 以将结果作为 dict 获取

from pytesseract import Output

im = cv2.imread(str(imPath), cv2.IMREAD_COLOR)
newdata=pytesseract.image_to_osd(im, output_type=Output.DICT)

示例输出如下所示:使用 dict 键访问值


    'page_num': 0,
    'orientation': 90,
    'rotate': 270,
    'orientation_conf': 1.2,
    'script': 'Latin',
    'script_conf': 1.11

【讨论】:

【参考方案3】:

@lads 已经提到了可以找到方向的方法。 我刚刚使用 re 来了解我们需要旋转多少度数。

imPath='path_to_image'
im = cv2.imread(str(imPath), cv2.IMREAD_COLOR)
newdata=pytesseract.image_to_osd(im)
re.search('(?<=Rotate: )\d+', newdata).group(0)

【讨论】:

以上是关于获取方向pytesseract Python3的主要内容,如果未能解决你的问题,请参考以下文章

为啥不能用 PIL 和 pytesseract 获取字符串?

Pytesseract 设置字符白名单

如何使用 pytesseract 获得每一行的信心

pytesseract 给出错误 PermissionError: [WinError 5] Access is denied

Python之pytesseract模块-实现OCR

如何使用 PyTesseract 去除图像噪声以改善结果?