内网环境下破解国家外汇管理局验证码(二)
上次说到对验证码区域进行截图后直接调用 tesseract 进行识别会遇到识别率较低的问题,这边给出简易的二值化预处理代码,降噪等操作可以自行研究,一般操作是遍历每个像素点,如果发现它跟周围多少个像素点不一样就认为是噪声,需要去除。
在那之前,先要确保截图清晰完整,这边由于验证码图片较小,进行截图时很可能会漏截或者多截,正确的办法是先大概进行一次截图,然后查看截图的效果(可以用打印返回值的方式查看截图保存路径,一般在 C:\iS-RPA\temp 中),然后在截图组件的目标属性中进行位置的微调,直到截图清晰完整:
假设截图组件返回值(文件路径)命名为 yzm:
相关预处理代码如下:
from PIL import Image
img = Image.open(yzm)
Img = img.convert('L')
threshold = 100 # 二值化阈值,可以自行设置
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
photo = Img.point(table,'1')
photo.save(yzm)
原图以及处理后的图片如下: