栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么pytesseract无法从背景较暗的图像中识别数字?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么pytesseract无法从背景较暗的图像中识别数字?

我有两个建议。

首先,这是迄今为止最重要的,在OCR预处理中,图像是获得良好结果的关键。对于您的情况,我建议进行二值化。您的图像看起来非常好,因此您应该不会有任何问题,但是如果这样做,那么也许应该尝试对图像进行二值化:

import cv2from PIL import Imageimg = cv2.imread('gradient.png')# If your image is not already grayscale :# img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)threshold = 180 # to be determined_, img_binarized = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)pil_img = Image.fromarray(img_binarized)

然后使用二值化图像再次尝试ocr。

检查图像是否为灰度图像,如果需要,请取消注释。

这是简单的阈值处理。自适应阈值化也存在,但是它很嘈杂,不会给您带来任何影响。

Tesseract可以更轻松地对图像进行二值化处理。这已经在内部完成(https://github.com/tesseract-
ocr/tesseract/wiki/ImproveQuality
),但有时事情可能会变得混乱,通常对自己进行预处理很有用。

您可以通过查看图像来检查阈值是否正确:

import matplotlib.pyplot as pltplt.imshow(img, cmap='gray')plt.imshow(img_binarized, cmap='gray')

其次,如果我上面所说的仍然不起作用,我知道这并不能回答“为什么pytesseract在这里不起作用”,但我建议您尝试使用tesserocr。它是Tesseract的维护的python包装器。

您可以尝试:

import tesserocrtext_from_ocr = tesserocr.image_to_text(pil_img)

这是来自pypi的tesserocr的文档:https
://pypi.org/project/tesserocr/

对于opencv:https :
//pypi.org/project/opencv-python/

作为旁注,在Tesseract中对黑白进行了对称处理,因此在黑色背景上具有白色数字并不是问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662730.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号