Qianfan-OCR入门实战:Python requests调用OCR API并解析JSON响应
Qianfan-OCR入门实战Python requests调用OCR API并解析JSON响应1. 项目概述Qianfan-OCR是百度千帆推出的开源文档智能多模态模型基于4B参数的Qwen3-4B语言模型构建。这个端到端解决方案将传统OCR流水线简化为单一模型处理支持文字识别、版面分析和文档理解三大核心功能。作为Apache 2.0协议下的开源项目它既可用于商业场景也支持进一步微调。模型采用InternVLChat架构结合了InternViT视觉编码器和Qwen3-4B语言模型在保持轻量化的同时实现了出色的多模态理解能力。2. 环境准备2.1 基础环境要求确保你的开发环境满足以下条件Python 3.8requests库用于API调用可访问的Qianfan-OCR服务默认地址http://localhost:7860安装requests库pip install requests2.2 服务状态检查在开始编码前建议先确认OCR服务运行正常curl http://localhost:7860正常应返回Gradio WebUI的HTML内容。3. 基础API调用3.1 简单OCR识别以下是最基础的文字识别代码示例import requests import base64 def simple_ocr(image_path): # 读取图片并编码为base64 with open(image_path, rb) as image_file: encoded_image base64.b64encode(image_file.read()).decode(utf-8) # 构造请求数据 payload { image: encoded_image, task: ocr } # 发送POST请求 response requests.post(http://localhost:7860/api/predict, jsonpayload) # 返回原始JSON响应 return response.json() # 使用示例 result simple_ocr(test.jpg) print(result)3.2 响应数据结构解析典型成功响应包含以下字段{ status: success, data: { text: 识别出的全部文字内容..., language: zh, confidence: 0.95 } }错误响应可能的结构{ status: error, message: 错误描述信息 }4. 进阶功能实现4.1 带布局分析的OCR启用Layout-as-Thought模式可获得结构化输出def layout_analysis(image_path): with open(image_path, rb) as f: img_base64 base64.b64encode(f.read()).decode(utf-8) payload { image: img_base64, task: ocr, layout: True # 启用布局分析 } response requests.post(http://localhost:7860/api/predict, jsonpayload) return response.json()响应示例{ status: success, data: { text: ..., layout: [ { type: title, text: 文档标题, bbox: [x1, y1, x2, y2] }, { type: paragraph, text: 正文内容..., bbox: [x1, y1, x2, y2] } ] } }4.2 带提示词的信息提取通过提示词实现定向信息抽取def prompt_ocr(image_path, prompt): with open(image_path, rb) as f: img_base64 base64.b64encode(f.read()).decode(utf-8) payload { image: img_base64, task: ocr, prompt: prompt } response requests.post(http://localhost:7860/api/predict, jsonpayload) return response.json()使用示例# 提取表格内容 result prompt_ocr(invoice.jpg, 请提取文档中的表格内容以Markdown格式输出) # 提取特定字段 result prompt_ocr(id_card.jpg, 请从图片中提取以下字段姓名、身份证号、有效期。使用JSON格式输出)5. 错误处理与调试5.1 常见错误处理建议在代码中加入完善的错误处理def safe_ocr(image_path): try: with open(image_path, rb) as f: img_base64 base64.b64encode(f.read()).decode(utf-8) response requests.post( http://localhost:7860/api/predict, json{image: img_base64, task: ocr}, timeout10 ) result response.json() if result.get(status) ! success: raise ValueError(fOCR失败: {result.get(message, 未知错误)}) return result[data] except requests.exceptions.RequestException as e: print(f网络请求失败: {str(e)}) except Exception as e: print(f处理失败: {str(e)}) return None5.2 服务状态监控可以通过API检查服务健康状态def check_service_health(): try: response requests.get(http://localhost:7860/health, timeout5) return response.status_code 200 except: return False6. 实战案例发票信息提取6.1 完整代码示例import requests import base64 import json def extract_invoice_info(image_path): # 读取图片 with open(image_path, rb) as f: img_data base64.b64encode(f.read()).decode(utf-8) # 构造提示词 prompt 请从发票中提取以下信息并以JSON格式返回 - 发票号码 - 开票日期 - 销售方名称 - 购买方名称 - 金额合计大写和小写 - 商品列表名称、规格、数量、单价、金额 # 发送请求 response requests.post( http://localhost:7860/api/predict, json{ image: img_data, task: ocr, prompt: prompt, layout: True }, timeout15 ) # 解析结果 result response.json() if result[status] success: try: # 尝试解析返回的JSON数据 invoice_data json.loads(result[data][text]) return invoice_data except json.JSONDecodeError: # 如果解析失败返回原始文本 return result[data][text] else: raise Exception(f识别失败: {result.get(message)}) # 使用示例 invoice_info extract_invoice_info(invoice.jpg) print(json.dumps(invoice_info, indent2, ensure_asciiFalse))6.2 结果后处理建议对于返回的非结构化结果可以添加后处理逻辑def postprocess_text(text): # 去除多余空格和换行 text .join(text.split()) # 尝试提取关键信息示例提取日期 import re date_pattern r\d{4}年\d{1,2}月\d{1,2}日 dates re.findall(date_pattern, text) return { raw_text: text, extracted_dates: dates }7. 总结通过本文的实践指南我们系统性地掌握了基础调用学会使用Python requests库与Qianfan-OCR API交互功能进阶实现了布局分析、提示词工程等高级功能错误处理构建了健壮的异常处理机制实战应用完成了发票信息提取的端到端案例Qianfan-OCR作为开源多模态模型相比传统OCR方案具有显著优势端到端处理流程简化支持复杂的文档理解任务通过提示词实现灵活的信息抽取开源协议允许商业使用和二次开发对于希望快速实现文档智能处理的应用场景这套方案提供了开箱即用的强大能力。下一步可以探索批量处理优化自定义模型微调与其他系统的集成方案获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2542103.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!