首页 > 解决方案 > 如何从图像中提取文本

问题描述

我已经尝试了网站上的大多数解决方案来从图像中提取数据,只有这个脚本使用 *.tif 格式,并给了我正确的数据

'''
from PIL import Image
import glob
import pytesseract
image_list = []
for filename in glob.glob(my_image): 
    im=Image.open(filename)
    image_list.append(im)
pytesseract.pytesseract.tesseract_cmd="C:\\Program Files\\Tesseract-OCR\\tesseract.exe"
texts = [pytesseract.image_to_string(img,lang = 'eng') for img in image_list]
'''

但是,这不适用于 *.png 和 *.jpg,我尝试了以下方法:

'''
import cv2
import numpy as np
image = cv2.imread('1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
sharpen_kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharpen = cv2.filter2D(gray, -1, sharpen_kernel)
thresh = cv2.threshold(sharpen, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
close = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel, iterations=1)
result = 255 - close
'''

就像,

'''
import os
from PIL import Image
import cv2
import pytesseract
import ftfy
import uuid
filename = img
image = cv2.imread(os.path.join(filename))
gray = cv2.threshold(image, 200, 255, cv2.THRESH_BINARY)[1]
gray = cv2.resize(gray, (0, 0), fx=3, fy=3)
gray = cv2.medianBlur(gray, 9)
filename = str(uuid.uuid4())+".jpg"
cv2.imwrite(os.path.join(filename), gray)
config = ("-l eng --oem 3 --psm 11")
text = pytesseract.image_to_string(Image.open(os.path.join(filename)), config=config)
text = ftfy.fix_text(text)
text = ftfy.fix_encoding(text)
text = text.replace('-\n', '')
print(text)
'''

等等,但没有给我数据,如何从发票等图像中提取文本?

标签: python-3.xopencvpython-imaging-librarypython-tesseract

解决方案


import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'
print(pytesseract.image_to_string(r'D:\examplepdf2image.png'))

def escape(html):
"""Returns the given HTML with ampersands, quotes and carets encoded."""
return mark_safe(force_unicode(html).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('"', '&quot;').replace("'", '&#39;'))

这是一个示例代码,而不是尝试通过许多不同的变量打印文本,而只是尝试先打印图像本身。然后研究如何从那里改进。最后一件事是,这将使 python 正常工作,使其易于理解。带有 def 转义的第二段代码显示了如何导入一个 html 文件,您必须将代码段放入该文件中,以便根据自己的喜好进行更改。


推荐阅读