源代码
1. 读取发票
ocr = CnOcr()``tool = pyocr.get_available_tools()[0]`
`img_url = "pic/fp01.jpg"``with open(img_url, 'rb') as f:` `a = f.read()``new_img = PI.open(io.BytesIO(a))``new_img.show()
2. 提取发票号码
def text1(new_img):`
`left = 1530` `top = 80` `right = 1830` `bottom = 160` ` image_text1 = new_img.crop((left, top, right, bottom))`
`#image_text1.show()` `txt1 = tool.image_to_string(image_text1)` `#print(txt1)` `return txt1` `# print(text1(new_img))
left、top、right、bottom就是图片的四个顶点坐标,数值可以经过多次修正而定,大家根据自己的发票内容去定位即可,如果想兼容性强一些,可以让框子尽可能大,以保证每一张发票都能准确框住该位置。这也要求发票的各照片不能差距太大,尽量按统一标准拍摄,以保证各字段相对位置变化不会太大,否则一旦框不住需要的字段,就无法识别。如果所有发票都是格式统一的电子发票则不存在此问题。
print(pyocr.get_available_tools()[0])
可以看出pyocr就是直接调用的tesseract。接着利用ocr把图片变成字符串。