python - 无法使用 pytesseract.image_to_string 从图像中读取文本

这里的问题是我需要删除行并编写代码来识别字符。到目前为止,我已经看到了解决方案,其中 char 是实心的,但它有带双边框的 char。

最佳答案

对于这个特定的验证码,有一个非常简单的解决方案。但是,由于评论中已经提到的验证码的“性质”,并且通常在处理提供的输入数据有限的图像处理任务时,无法保证这种方法适用于其他甚至非常相似的验证码。

  • 读取灰度图像。

  • 将图像阈值设置为接近白色的截止点。

  • Flood fill黑色的“背景”。

  • 使用 -psm 6 运行 pytesseract选项。

这就是全部代码:

import cv2
import pytesseract

# Read image as grayscale
img = cv2.imread('FuZEJ.png', cv2.IMREAD_GRAYSCALE)

# Threshold at nearly white cutoff
thr = cv2.threshold(img, 224, 255, cv2.THRESH_BINARY)[1]

# Floodfill "background" with black
ff = cv2.floodFill(thr, None, (0, 0), 0)[1]

# OCR using pytesseract
text = pytesseract.image_to_string(ff, config='--psm 6').replace('\n', '').replace('\f', '')
print(text)
# xwphs

警告:我使用来自 Mannheim University Library 的特殊版本的 Tesseract .

----------------------------------------
System information
----------------------------------------
Platform:      Windows-10-10.0.16299-SP0
Python:        3.9.1
PyCharm:       2021.1.1
OpenCV:        4.5.1
pytesseract:   5.0.0-alpha.20201127
----------------------------------------

https://stackoverflow.com/questions/67561509/

相关文章:

sql - 如何计算运行平均值

python - 如何减少 PyQt5 QGridLayout 中两个小部件之间的空间?

haskell - 在 haskell 中给 `_` 一个类型签名

visual-studio-code - 代码行数旁边的竖线是什么

r - 为什么 geom_smooth 不绘图? (唯一值不足错误)

kubernetes - 如何将 kubernetes 的一个 secret 值复制到同一 name

java - 如果读取字节数为 0,是否有任何理由继续读取 InputStream?

python - 检查是否存在与列表中的字符串匹配的子字符串

amazon-web-services - 为什么 X-Forwarded-Proto 在 Elas

node.js - 如何使用 NestJS 为多个国家/地区编写调度程序 12 :00AM(will