如何增强Tesseract的OCR自动文本旋转功能? [英] How to enhance Tesseract automatic text rotation capabilities for OCR?

查看:17
本文介绍了如何增强Tesseract的OCR自动文本旋转功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组PIL图像,其中一些页面被正确旋转,而另一些页面的旋转接近180°。这意味着自动方向检测可能会失败,因为不是178°识别2°方向。

遗憾的是,Tesseract有时无法识别2°方向和178°之间的差异,因此在后一种情况下,输出完全错误。

简单的im.rotate(180)可以自动修复这个问题,但该步骤是手动的,我希望tesseract自动了解文本是否颠倒。 看一下一些方法,它们需要Hough变换来理解文档中的流行方向。但是,在这种情况下,由于这些扫描文档的特殊方向,它们可能会失败。

有哪些自动循环选项可用,无需在第三方脚本上回放,但保留在Python库中?

推荐答案

我是StackOverflow的新手,因此对于任何形式的误导或错误答案,请原谅。如果有人还在寻找答案,pytesseract的image_to_osd函数会提供有关方向的信息。它只确定方向为0°、90°、180°或270°,也就是说,如果文本沿轴对齐,它将准确确定方向。但它也会输出这四个角度中的任何一个,即使方向不同也是如此。

因此,如果您使用的是像2°左右的微小角度差异,这应该可以解决问题。因此,我们首先对齐文本,然后使用函数。

以下是python中的代码:

while True:
    osd_rotated_image = pytesseract.image_to_osd(image)

    # using regex we search for the angle(in string format) of the text
    angle_rotated_image = re.search('(?<=Rotate: )d+', osd_rotated_image).group(0)

    if (angle_rotated_image == '0'):
        image = image
        # break the loop once we get the correctly deskewed image
        break
    elif (angle_rotated_image == '90'):
        image = rotate(image,90,(255,255,255)) # rotate(image,angle,background_color)
        continue
    elif (angle_rotated_image == '180'):
        image = rotate(image,180,(255,255,255))
        continue
    elif (angle_rotated_image == '270'):
        image = rotate(image,90,(255,255,255))
        continue    

和对齐文本deskewpython库在我看来是最好的。

谢谢您。

这篇关于如何增强Tesseract的OCR自动文本旋转功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆