当前位置: 首页 > news >正文

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 pillow

2.2 服务访问

确保Qianfan-OCR服务已启动并运行在以下地址:

http://localhost:7860

3. 封装类实现

3.1 基础OCR封装类

import requests from PIL import Image import base64 import io import json class QianfanOCR: def __init__(self, base_url="http://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, format="PNG") return base64.b64encode(buffered.getvalue()).decode('utf-8') def recognize_text(self, image_path, prompt=None, layout=False): """ 识别图片中的文字内容 参数: 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, json=payload) response.raise_for_status() return response.json() except requests.exceptions.RequestException as e: print(f"请求失败: {e}") return None

3.2 进阶功能扩展

3.2.1 表格提取方法
def extract_tables(self, image_path): """提取图片中的表格内容""" prompt = "请提取文档中的表格内容,以Markdown格式输出" return self.recognize_text(image_path, prompt=prompt, layout=True)
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, prompt=prompt, layout=True)

4. 使用示例

4.1 基础OCR识别

ocr = QianfanOCR() result = ocr.recognize_text("invoice.png") print(result["text"])

4.2 带布局分析的OCR

result = ocr.recognize_text("document.png", layout=True) print(json.dumps(result["layout"], indent=2, ensure_ascii=False))

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 None

5.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 results

5.3 性能优化建议

  1. 图片预处理:适当调整图片大小和对比度可提高识别率
  2. 缓存结果:对相同图片避免重复识别
  3. 并发请求:使用线程池处理大量图片

6. 总结

本文介绍了如何使用Python的requests库封装Qianfan-OCR的API接口,实现带布局分析功能的OCR识别。通过这个封装类,开发者可以轻松实现:

  1. 基础文字识别功能
  2. 文档结构分析
  3. 定向信息提取
  4. 表格内容抽取

Qianfan-OCR作为端到端的文档智能模型,相比传统OCR方案具有以下优势:

  • 一体化:单模型完成OCR+布局分析+文档理解
  • 灵活:通过提示词实现定制化提取
  • 开源:Apache 2.0协议允许商用和二次开发

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

http://www.jsqmd.com/news/686100/

相关文章:

  • 快速体验BERT文本分割:上传文档点击即用,效果立竿见影
  • Wan2.2-I2V-A14B惊艳效果展示:粒子特效+镜头推拉运镜视频生成案例
  • 视频即坐标:室内人员高精度无感定位技术白皮书——构建位置、轨迹、预警一体化的空间智能体系
  • 经营分析会怎么开?开好经营分析会就这5个思路
  • 2026年武汉高中数学老师费用揭秘,熟悉教材的老师怎么收费 - mypinpai
  • NVIDIA License Server 与 GRID vGPU 官方软件安装包一站式获取指南
  • 07华夏之光永存:黄大年茶思屋榜文解法「12期7题」
  • Docker调试不再黑盒:基于eBPF+低代码面板的实时容器内核态追踪方案(含GitHub私有仓库访问密钥限时发放)
  • 让空间看懂人 ——室内多视角相机高精度无感定位与行为感知白皮书
  • Windows右键菜单管理终极指南:让你的右键菜单快如闪电 [特殊字符]
  • 智慧树自动刷课插件:3分钟安装,彻底告别手动操作烦恼
  • 如何快速将B站视频转为文字?bili2text完整使用指南
  • Dgraph v25.3.3 发布:升级依赖版本,修复多个 CVE 漏洞
  • 消息队列点对点和发布订阅模式对比和总结
  • 戴尔G15终极散热控制指南:开源方案彻底解决游戏本过热问题
  • 探讨能树立学生信心的高中数学老师,传思习得教育哪家分校好? - 工业设备
  • Docker AI调度性能断崖式下跌?3个关键指标(SLO Violation Rate、GPU Utilization Entropy、Queue Wait P99)实时监控配置全公开
  • 连续变量量子密钥分发与高斯后选择技术解析
  • 抖音下载神器终极指南:3分钟搞定无水印批量下载
  • Three.js 工程向:GPU Overdraw 诊断与前端渲染优化
  • 计算机毕业设计:Python股票多维度诊断与LSTM预测平台 Flask框架 TensorFlow LSTM 数据分析 可视化 大数据 大模型(建议收藏)✅
  • 2026年好用的冷却塔推荐,能降低年均停机时间适配航天电子仪表领域 - 工业品网
  • Phi-3.5-mini-instruct轻量大模型选型指南:7.6GB模型在4090上的性价比实测
  • 【限时开源】GitHub Star 2.4k的docker-storage-analyzer工具深度评测:3分钟定位存储热点容器、镜像、卷——仅剩最后200个企业版License配额
  • Windows右键菜单终极清理指南:用ContextMenuManager让右键菜单回归清爽高效
  • 简单几步!VoxCPM-1.5-WEBUI实现文字转语音,支持在线试听
  • Linux常用命令在AI模型运维中的实战应用:以Qwen3-4B-Thinking为例
  • 实战指南:基于Altium Designer 23的STM32F407核心板四层PCB设计与规则配置
  • 聊聊能降低年均停机时间的冷却塔厂家,怎么选择 - 工业品牌热点
  • Three.js 工程向:Draw Call 预算治理与渲染批处理实践