python - 如何使用python从图像中提取文本或数字
问题描述
我想从这样的图像中提取文本(主要是数字)
我试过这段代码
import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
img = Image.open('1.jpg')
text = pytesseract.image_to_string(img, lang='eng')
print(text)
但我得到的只是这个(hE PPAR)
解决方案
执行 OCR 时,对图像进行预处理非常重要,因此要检测的所需文本为黑色,背景为白色。要做到这一点,这里有一个简单的方法,使用 OpenCV 对 Otsu 的图像进行阈值处理,这将产生二值图像。这是预处理后的图像:
我们使用--psm 6
配置设置将图像视为统一的文本块。这是您可以尝试的其他配置选项。来自 Pytesseract 的结果
01153521976
代码
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
image = cv2.imread('1.png', 0)
thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
data = pytesseract.image_to_string(thresh, lang='eng',config='--psm 6')
print(data)
cv2.imshow('thresh', thresh)
cv2.waitKey()
推荐阅读
- c# - 使用默认值更改 SQL Server 用户定义类型仍然强制我传递新列
- mobile - Ubuntu 移动宽带
- python - python find index of elements functionally depending on a condition
- swift - 禁用特定表格视图单元格的按钮功能
- excel - 如何将别名设置为发件人帐户?
- html - 如何将图像与右侧的段落对齐
- python - 访问 Django 模型字段会在字典中引发 NameError
- python-3.x - 从列表的 1 而不是 0 开始计算索引
- javascript - 在开始时设置状态
- ios - 原因:'尝试从第 0 节中删除第 12 行,更新前仅包含 10 行'