Qianfan-OCR代码实例:基于requests的带Layout分析OCR封装类
Qianfan-OCR代码实例基于requests的带Layout分析OCR封装类1. 项目概述Qianfan-OCR是百度千帆推出的开源端到端文档智能多模态模型基于4B参数的Qwen3-4B语言模型构建。这个多模态视觉语言模型(VLM)采用Apache 2.0协议完全开源且可商用能够替代传统OCR流水线单模型即可完成OCR识别、版面分析和文档理解任务。1.1 核心功能通用OCR准确识别图像中的文字内容布局分析自动识别文档结构标题、段落、表格等定向提取通过提示词实现特定信息抽取多语言支持支持中英文等多种语言识别2. 环境准备2.1 安装依赖pip install requests pillow2.2 服务访问确保Qianfan-OCR服务已启动并运行在以下地址http://localhost:78603. 封装类实现3.1 基础OCR封装类import requests from PIL import Image import base64 import io import json class QianfanOCR: def __init__(self, base_urlhttp://localhost:7860): self.base_url base_url def _image_to_base64(self, image_path): 将图片转换为base64编码 with Image.open(image_path) as img: buffered io.BytesIO() img.save(buffered, formatPNG) return base64.b64encode(buffered.getvalue()).decode(utf-8) def recognize_text(self, image_path, promptNone, layoutFalse): 识别图片中的文字内容 参数: image_path: 图片路径 prompt: 可选提示词 layout: 是否启用布局分析 返回: 识别结果 url f{self.base_url}/api/ocr image_base64 self._image_to_base64(image_path) payload { image: image_base64, prompt: prompt, layout: layout } try: response requests.post(url, jsonpayload) response.raise_for_status() return response.json() except requests.exceptions.RequestException as e: print(f请求失败: {e}) return None3.2 进阶功能扩展3.2.1 表格提取方法def extract_tables(self, image_path): 提取图片中的表格内容 prompt 请提取文档中的表格内容以Markdown格式输出 return self.recognize_text(image_path, promptprompt, layoutTrue)3.2.2 关键信息提取方法def extract_fields(self, image_path, fields): 提取图片中的特定字段 参数: image_path: 图片路径 fields: 要提取的字段列表如[姓名, 日期, 金额] 返回: JSON格式的提取结果 fields_str 、.join(fields) prompt f请从图片中提取以下字段{fields_str}。使用JSON格式输出。 return self.recognize_text(image_path, promptprompt, layoutTrue)4. 使用示例4.1 基础OCR识别ocr QianfanOCR() result ocr.recognize_text(invoice.png) print(result[text])4.2 带布局分析的OCRresult ocr.recognize_text(document.png, layoutTrue) print(json.dumps(result[layout], indent2, ensure_asciiFalse))4.3 表格提取table_result ocr.extract_tables(report.png) print(table_result[text])4.4 关键信息提取fields [姓名, 日期, 金额] info_result ocr.extract_fields(receipt.png, fields) print(info_result[text])5. 最佳实践5.1 错误处理def safe_ocr(ocr, image_path): try: result ocr.recognize_text(image_path) if result is None: print(识别失败) return None if error in result: print(f识别错误: {result[error]}) return None return result[text] except Exception as e: print(f发生异常: {e}) return None5.2 批量处理def batch_process(ocr, image_paths): results [] for path in image_paths: result ocr.recognize_text(path) if result: results.append(result[text]) return results5.3 性能优化建议图片预处理适当调整图片大小和对比度可提高识别率缓存结果对相同图片避免重复识别并发请求使用线程池处理大量图片6. 总结本文介绍了如何使用Python的requests库封装Qianfan-OCR的API接口实现带布局分析功能的OCR识别。通过这个封装类开发者可以轻松实现基础文字识别功能文档结构分析定向信息提取表格内容抽取Qianfan-OCR作为端到端的文档智能模型相比传统OCR方案具有以下优势一体化单模型完成OCR布局分析文档理解灵活通过提示词实现定制化提取开源Apache 2.0协议允许商用和二次开发获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2545564.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!