背景
对于能访问互联网的设备来说,付费引用互联网上三方的验证码识别接口当然准确率和稳定性会更高一些,并且有客服进行指导和维护,但是对于另外一些不能访问互联网或对数据安全要求较高的设备来说,使用本地离线的验证码识别OCR就很有必要。
这将会是一个专栏,逐步更新ddddocr支持的所有验证码类型
图形验证码举例
代码示例
import os
import requests
import numpy as np
import ddddocr
def _read_image(image_path_or_url):
"""
读取图片信息
兼容本地路径和网络链接
⭐注意: 如果传入网络链接, 请保证指令再次请求该链接能获得与您目标一致的验证码图片
:param image_path_or_url: 图片路径,支持本地路径或网络链接
"""
image = None
# 判断传入的是本地文件路径还是链接
if os.path.isfile(image_path_or_url):
# 本地路径,直接读取图片
with open(image_path_or_url, 'rb') as f:
image = f.read()
if image is None:
raise(f"Failed to read image from local file: {image_path_or_url}")
else:
# 网络链接,从链接读取图片
try:
response = requests.get(image_path_or_url)
if response.status_code == 200:
image = response.content
else:
raise(f"Failed to fetch image from URL (HTTP {response.status_code}): {image_path_or_url}")
except Exception as e:
raise Exception(f"Error reading image from URL: {e}")
return image
def _ocr_by_path_or_url(image_path_or_url):
image = _read_image(image_path_or_url)
ocr = ddddocr.DdddOcr(show_ad=False)
res = ocr.classification(image)
return res