在Pyocr中从左到右更改文本方向

时间:2017-07-01 15:07:59

标签: python ocr tesseract

我正在使用pyocr与Pillow和OpenCV一起从PDF文档中提取文本。但是,PDF文档是表单,这意味着,在某些情况下,表单中项目的标签位于文档的最左侧,而项目的值位于文档的右侧。一个例子是(为间距添加了点,但在图像中不存在):

橘子的价格:...................................... $ 15.75

苹果价格:....................................... $ 12.51

当我将图像转换为文本时,它将如下所示:

橘子的价格:/ n苹果/ n $ 15.75 / n $ 12.51

基本上,文字是从上到下,然后从左到右,从左到右,然后从上到下阅读。

在我对这个问题的在线研究中,有许多答案突出了如何检测文本的方向,但我已经知道我希望我的文本在所有情况下从左向右流动。所以,我的问题是,有没有办法改变pyocr中的默认设置,以便它始终从左到右读取文本。我希望我的转换后的文字看起来像这样:

橘子的价格:15.75美元/ n 苹果价格:12.51美元/ n

以下是我目前用于pyocr的代码:

def image_to_OCR(req_image_list,final_text):
tool = pyocr.get_available_tools()[0]
for img in req_image_list:
    txt = tool.image_to_string(
        PI.open(io.BytesIO(img)),
        lang='eng',
        builder=pyocr.builders.TextBuilder()
    )
    final_text.append(txt)
return(final_text)

1 个答案:

答案 0 :(得分:0)

tesseract即使使用基于列的图像也可以进行OCR。所以你不能指定方向。 您可以将图像旋转90,然后执行ocr

您可以使用numpy将图像转换为数组,然后根据空行分割图像,然后保存图像并执行OCR。