gpt4 book ai didi

captcha - 简单的验证码求解

转载 作者:行者123 更新时间:2023-12-02 11:17:45 26 4
gpt4 key购买 nike

我正在尝试使用OpenCV和pytesseract解决一些简单的验证码。验证码示例包括:
enter image description here
enter image description here
enter image description here
enter image description here
我试图用一些过滤器去除嘈杂的点:

import cv2
import numpy as np
import pytesseract

img = cv2.imread(image_path)
_, img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
img = cv2.morphologyEx(img, cv2.MORPH_OPEN, np.ones((4, 4), np.uint8), iterations=1)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.GaussianBlur(img, (5, 5), 0)
cv2.imwrite('res.png', img)
print(pytesseract.image_to_string('res.png'))
生成的转换图像为:
enter image description here
enter image description here
enter image description here
enter image description here
不幸的是pytesseract只能正确识别第一个验证码。还有其他更好的转换吗?
最终更新:
正如@Neil所建议的,我试图通过检测连接的像素来消除噪声。为了找到连接的像素,我找到了一个名为 connectedComponentsWithStats的函数,该函数可以检测连接的像素并为组(组件)分配标签。通过找到连接的组件并删除像素数量较少的组件,我设法使用pytesseract获得了更好的整体检测精度。
这是新产生的图像:
enter image description here
enter image description here
enter image description here
enter image description here

最佳答案

我采用了一种更直接的方法来过滤pdf文档中的墨水 Blob 。我不会分享很多代码,但是这是我采用的一般策略:

  • 使用Python Pillow库获取可直接操作像素的图像对象。
  • 将图像二值化。
  • 查找所有连接的像素以及每组连接的像素中有多少像素。您可以使用minesweeper算法执行此操作。这很容易搜索。
  • 设置所有合法字母均应具有的某个像素阈值。这将取决于您的图像分辨率。
  • 将阈值以下的组中的所有黑色像素替换为白色像素。
  • 转换回图像。
  • 关于captcha - 简单的验证码求解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62960983/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com