gemini模型可高效识别图片验证码:一、调用gemini vision api进行单图识别;二、本地部署minicpm-v等轻量多模态模型离线处理;三、构建异步批量管道提升吞吐;四、结合opencv预处理增强图像质量。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您需要从大量网页或接口中提取图片验证码并自动识别,传统 OCR 工具在扭曲、噪点、粘连等干扰下准确率常显著下降。Gemini 模型具备多模态理解能力,可直接接收图像输入并输出文本结果。以下是利用 Gemini 批量处理图片验证码的可行方法:
一、调用 Gemini Vision API 进行单图识别
该方法通过 Google 提供的官方 API 接口,将本地图片文件编码为 Base64 后提交至 Gemini Pro Vision 模型,由其返回识别后的验证码文本。适用于中低频批量任务,且需确保图片符合 API 尺寸与格式限制。
1、安装 google-generativeai 库:pip install google-generativeai
2、从 Google AI Studio 获取 API 密钥,并设置环境变量:export GOOGLE_API_KEY="your_api_key_here"
3、读取本地验证码图片文件,使用 base64 编码转换为字符串。
4、构建包含图片数据和提示词(prompt)的请求内容,例如:“仅输出图片中的 4 位纯数字验证码,不带空格、标点或任何额外说明。”
5、调用 generative_models.GenerativeModel('gemini-1.5-flash') 的 generate_content 方法发送请求。
6、解析 response.text 属性,提取模型返回的验证码字符串。
二、本地部署轻量级多模态模型替代方案
当网络隔离、隐私敏感或需高并发处理时,可选用可在本地运行的开源多模态模型,如 LLaVA-1.6 或 MiniCPM-V 2.6,配合 Python 脚本实现离线批量识别。该方式规避 API 调用延迟与配额限制,但需牺牲部分复杂验证码的识别精度。
1、克隆 MiniCPM-V 仓库:git clone https://github.com/OpenBMB/MiniCPM-V
2、安装依赖并加载量化版模型权重(如 minicpm-v-2_6-int4),降低显存占用。
3、遍历指定目录下的所有 .png/.jpg 验证码图片文件。
4、对每张图片执行预处理:调整尺寸至模型接受范围(如 384×384)、归一化像素值。
5、构造 prompt:“请识别并仅输出图中显示的英文与数字混合验证码,共 5 个字符,区分大小写。”
6、调用 model.chat_image() 方法获取识别结果,截取首行纯文本输出作为验证码。
三、构建异步批量处理管道
为提升吞吐量,避免串行等待,可将图片识别任务封装为异步协程,结合 asyncio 和 aiohttp 实现并发请求。适用于使用 Gemini Vision API 处理数百张以上图片的场景,有效压缩总耗时。
1、定义异步函数 process_single_captcha(image_path: str),内部完成图片读取、Base64 编码、API 请求与响应解析。
2、使用 aiohttp.ClientSession() 创建共享会话实例,复用连接以减少握手开销。
3、将全部图片路径构造成任务列表:tasks = [process_single_captcha(p) for p in image_paths]
4、调用 asyncio.gather(*tasks) 并发执行所有识别任务。
5、收集返回结果列表,按原始路径顺序保存至 CSV 文件,字段包括“文件名”、“识别结果”、“响应状态”。
四、预处理增强 + Gemini 联合识别
原始验证码图像若存在严重噪声、低对比度或旋转倾斜,会显著拉低 Gemini 的识别置信度。引入 OpenCV 或 PIL 预处理环节,可提升输入质量,进而提高最终识别准确率。
1、加载图片后转为灰度图,应用自适应阈值(cv2.ADAPTIVE_THRESH_GAUSSIAN_C)分离前景字符。
2、执行形态学闭操作填充字符断点,再用开操作去除孤立噪点。
3、检测最小外接矩形并仿射校正倾斜角度,使字符区域水平对齐。
4、裁剪出仅含字符的有效区域,缩放至统一尺寸(如 256×80),保持宽高比并补黑边。
5、将预处理后的图像送入 Gemini Vision API,提示词强化约束:“严格依据输入图像内容输出,禁止推测或补全。”











