python-3.x - 如何从图像中提取文本
问题描述
我已经尝试了网站上的大多数解决方案来从图像中提取数据,只有这个脚本使用 *.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)
'''
等等,但没有给我数据,如何从发票等图像中提取文本?
解决方案
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('&', '&').replace('<', '<').replace('>', '>').replace('"', '"').replace("'", '''))
这是一个示例代码,而不是尝试通过许多不同的变量打印文本,而只是尝试先打印图像本身。然后研究如何从那里改进。最后一件事是,这将使 python 正常工作,使其易于理解。带有 def 转义的第二段代码显示了如何导入一个 html 文件,您必须将代码段放入该文件中,以便根据自己的喜好进行更改。
推荐阅读
- php - 从支付网关重定向回来时用户会话丢失
- regex - python字符串仅替换保留非英文字母的特殊字符
- vb.net - VB.NET 日期时间选择器
- python - Python 作业帮助:在方程中使用一系列阶乘(有史以来第一篇!)
- node.js - 通过 cmd 使用“并发”来测试 API,但我收到错误
- opencv - 如何使用概率霍夫线变换检测所有垂直背景线?
- git - 我应该伪分叉我自己的 GitHub 存储库还是使用分支?
- c# - MongoDB 返回 null 以查询 .NET 中的所有文档
- deployment - 部署未成功:部署目录“out”不存在
- python - jupyter 按顺序打印绘图和数据框,for循环