我正在使用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)
答案 0 :(得分:0)
tesseract
即使使用基于列的图像也可以进行OCR。所以你不能指定方向。
您可以将图像旋转90,然后执行ocr
或
您可以使用numpy
将图像转换为数组,然后根据空行分割图像,然后保存图像并执行OCR。