验证码识别方案
之前已经说过了 tesseract 的验证码识别方案,具体的代码和实现思路可以参考代码。但是它只是一个思路并且不能代表所有的情况。
在最新的一个环境中,验证码的图片颜色前几行存在与验证码字符相同的颜色,导致的结果是产出的整个验证码变成了替换的纯色,虽然这个验证码图片与之前一样简单,都是数字、字母组合,但是完全无法识别
ddddocr
在解决以及寻找解决方案的时候,看到了 ddddocr 的模块,试用了以下,这个模块相对于 tesseract 来说简单太多,以下是代码:
import ddddocr
ocr = ddddocr.DdddOcr()
ori_ymz = 'test\\tttt1111.png'
# new_ymz = 'test\\test_test.png'
with open(ori_ymz,'rb') as f:
img_bytes = f.read()
result = ocr.classification(img_bytes)
print(result)
基本上是直接调用一个函数就识别到了,不需要额外的处理图片颜色、格式等
但是 ddddocr 也是有一定的弊端的,首先它的这个函数基本上没有任何参数,无法设置需要识别限定的内容,比如 tesseract 可以设置数字和字母,这对于简单类型的验证码来说足够了。所以 ddddocr 出现了更多的识别错误,准确率比我们改良的 tesseract 要少 1-2 层左右。
评论