opencv - 无法从图像中获取文本
问题描述
我正在学习 AI/ML 并尝试从此示例表单中获取文本。
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Users\Pranav\AppData\Local\Programs\Tesseract-OCR\tesseract.exe'
image = cv2.imread('image2.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (3,3), 0)
x,y,w,h = 393, 531, 837, 80
firstROI = blur[y:y+h,x:x+w]
firstname = pytesseract.image_to_string(firstROI, lang='eng', config='--psm 6')
print(firstname)
firstname = re.sub(r'[^\w]', '', firstname)
cv2.imshow('image', firstROI)
cv2.waitKey()
cv2.destroyAllWindows()
使用上面的代码,我可以在白色背景中获取正常打印的文本,但无法从灰色背景框中获取文本。例如,名字框的实际值为“Andrew”,但我只得到“oe”。
根据弗雷迪的评论,我浏览了这个链接并更新了以下代码,但仍然没有输出。
from tesserocr import PyTessBaseAPI, PSM, OEM
api = PyTessBaseAPI(psm=PSM.AUTO_OSD, lang='eng', path=r'C:\Users\Pranav\tessdata-master')
images = ['andrew1.png', 'andrew2.png', 'test1.png']
for img in images:
api.SetImageFile(img)
print (api.GetUTF8Text())
print (api.AllWordConfidences())
它只能读取第三张图片的文本输出(人口统计)。请帮助我如何从灰色背景图像中读取文本(安德鲁)。
解决方案
这个链接为我提供了答案。它消除了背景图像中的噪点。
推荐阅读
- git - 在 ubuntu 16 中触发 GIT 中的标记命令时出现错误:字符串中的未知非 ascii 选项
- javascript - 根据 ID 匹配更新/复制单元格数据到另一个工作表
- javascript - 浏览器级别的加密
- flutter - 如何在 Flutter 应用程序中混淆代码
- python - discord.py - 在 bot 离开服务器后从 json 中删除公会
- sql-server - Thread(sqlservr*)\ % 处理器时间超过 100%
- python-3.x - python如何将具有动态值的python长字符串转换为更具结构性的模式
- validation - Azure Active Directory B2C - 向(默认)注册用户流添加验证
- ios - 转换为 JSON
- angular - 未定义属性 在所有警报点填充属性