Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PaddleOCR-VL 文档解析 Demo

一个用于快速评估百度智能云 文档解析(PaddleOCR-VL)API 的本地 Web Demo。

无需在本地部署模型,也没有第三方 Python 依赖。准备好百度智能云 API Key 和 Secret Key 后,复制环境变量文件并运行 server.py,即可在浏览器中上传文档,查看云 API 返回的阅读顺序、版面坐标、表格、图片、Markdown 和完整 JSON。

这个项目只展示百度云服务返回的原始文档解析结果,不做简历字段提取、正则匹配、章节截断或自定义阅读顺序,适合在接入业务系统前快速判断 API 能否处理自己的真实文档。

能看到什么

  • PDF、Word、PPT、OFD、TXT 和多种图片格式统一上传
  • 官方服务支持印刷文本和手写文本解析,实际效果以输入文档为准
  • 公式、文档图片和语种识别无需额外开启
  • 模型推断的文档阅读顺序和版面元素类型
  • PDF/图片原件预览,以及版面元素和行级坐标高亮
  • 浏览器无法直接显示的文档在接口返回有效坐标时尝试重建版面
  • 表格 Markdown、单元格结构及跨页表格合并标识
  • 图表内容解析、标题层级和印章文字识别
  • Markdown 渲染、Markdown 源码和完整解析 JSON
  • Markdown、JSON 结果下载
  • 百度提交任务、轮询任务和下载结果的异步 API 调用链路

快速开始

1. 准备环境

  • Python 3.9 或更高版本
  • 已开通百度智能云文字识别服务
  • 可调用“文档解析(PaddleOCR-VL)”的 OCR 应用 API Key 和 Secret Key
  • 运行环境能够访问百度智能云接口和 cdn.jsdelivr.net

本项目只使用 Python 标准库,不需要执行 pip install

2. 配置密钥

进入克隆后的仓库根目录,复制环境变量模板。

Windows PowerShell:

Copy-Item .env.example .env

macOS / Linux:

cp .env.example .env

编辑新生成的 .env

BAIDU_API_KEY=你的_API_Key
BAIDU_SECRET_KEY=你的_Secret_Key

.env 已被 .gitignore 排除,不会随正常的 Git 提交进入仓库。也可以直接设置同名系统环境变量;系统环境变量优先于 .env

3. 启动 Demo

Windows:

python server.py

macOS / Linux:

python3 server.py

浏览器打开:http://127.0.0.1:8765

选择文档并点击“开始解析”即可。不要直接双击打开 index.html,页面需要通过本地 Python 服务访问 /api/parse

支持格式

类型 格式 当前 Demo 限制
图片 JPG、JPEG、PNG、BMP、TIF、TIFF 不超过 10 MB,最长边不超过 8192 px
版式文档 PDF、OFD Base64 上传不超过 50 MB;PDF 最多 500 页
流式文档 DOC、DOCX、TXT、WPS、PPT、PPTX 不超过 50 MB

百度接口允许部分版式文档达到 100 MB,但超过 50 MB 时需要使用 file_url。为了保持 Demo 足够简单,本项目只实现 file_data Base64 上传,因此统一在 50 MB 处拦截非图片文件。

已开启的 PaddleOCR-VL 能力

以下能力无需额外参数:

  • 版式文档公式识别
  • 文档图片解析
  • 语种自动识别

Demo 还会在提交任务时开启以下可选参数:

参数 作用
analysis_chart=true 解析统计图表内容
merge_tables=true 合并跨页表格并返回合并标识
relevel_titles=true 对段落标题重新分级
recognize_seal=true 识别印章文字
return_span_boxes=true 返回行级文字和坐标

前端不会写死百度的版面类型枚举;接口新增或返回未知类型时,仍会按原值展示。

结果界面

左侧是文档校样区:

  • PDF 使用 PDF.js 渲染上传原件
  • 浏览器可显示的图片直接复用上传原图
  • 版面框来自 pages[].layouts[].position/polygon
  • 行级定位来自 pages[].layouts[].span_boxes
  • Word、PPT、OFD、TXT、TIFF 等可直接提交解析;浏览器无法显示原件时,Demo 会根据接口实际返回的数据尝试重建版面

右侧提供四种结果视图:

  1. 阅读顺序:按百度返回的 layout 顺序展示所有元素,可点击定位
  2. Markdown:查看最终 Markdown 渲染效果
  3. MD 源码:查看并下载原始 Markdown
  4. JSON:查看并下载 parse_result_url 返回的完整结构

表格和图片在 layout.text 中可能为空,Demo 会根据 layout_id 自动关联 pages[].tablespages[].images

调用流程

flowchart LR
    A["浏览器选择文档"] --> B["本地 Python 服务"]
    B --> C["获取 Access Token"]
    C --> D["提交 PaddleOCR-VL 任务"]
    D --> E["每 5 秒轮询任务状态"]
    E --> F["下载 Markdown 和解析 JSON"]
    F --> G["浏览器展示与定位"]
Loading

PaddleOCR-VL 是异步接口。任务成功后会返回 markdown_urlparse_result_url,链接有效期为 30 天。Demo 会在任务完成后立即下载主 Markdown 和解析 JSON,当前页面不再依赖这两个主结果链接;JSON 或 Markdown 中引用的图片等嵌入资源仍可能使用临时地址,本项目也不会持久化解析结果。

当前轮询间隔为 5 秒,最长等待 10 分钟。百度官方限制提交接口 QPS 为 2、查询接口 QPS 为 5;本项目定位为单人能力评估工具,没有实现任务队列或并发调度。

项目结构

.
├── index.html       # 上传和结果校样界面
├── server.py        # 本地服务、百度鉴权、提交与轮询
├── .env.example     # 密钥配置模板
├── .gitignore       # 忽略本地密钥和 Python 缓存
├── LICENSE          # MIT 开源许可证
└── README.md

常见问题

405 Method Not Allowed / Unexpected end of JSON input

通常是直接打开了 index.html,或把百度任务接口当成 GET 请求调用。请先运行 server.py,再访问 http://127.0.0.1:8765。Demo 对百度提交和查询接口都使用 POST + application/x-www-form-urlencoded

页面提示“无法连接本地服务”

确认终端中的 Python 服务仍在运行,并使用服务输出的地址打开页面。

页面提示缺少百度密钥

确认仓库根目录存在 .env,并且两个字段都已填写。环境变量名必须是 BAIDU_API_KEYBAIDU_SECRET_KEY

百度返回额度或权限错误

确认对应应用已经开通“文档解析(PaddleOCR-VL)”,并检查免费额度、资源包或计费状态。Demo 会把百度返回的错误信息直接显示在页面上。

PDF 原件没有显示

PDF 原件预览依赖浏览器加载 PDF.js。加载失败、页面尺寸不匹配或文档存在旋转时,Demo 会回退到百度解析结果的版面重建,不影响 Markdown 和 JSON 结果查看。

使用边界

  • 上传的文档会发送至百度智能云进行解析,请根据自己的数据合规要求使用。
  • API 调用会消耗账户额度,并可能产生费用,请以自己的资源包和计费状态为准。
  • 这是能力评估 Demo,不包含账号、权限、数据库、任务队列、持久化或生产级安全设计。
  • 服务默认只监听 127.0.0.1。不要将这个未鉴权 Demo 直接暴露到公网,否则他人可以使用你的额度提交文档。
  • 页面不对模型结果进行业务规则修正;识别错误会原样保留,便于真实评估模型能力。
  • PDF 原件预览和 Markdown 渲染使用浏览器 CDN 依赖;即使 CDN 不可用,原始 JSON 和版面重建仍可展示。
  • API 可用性、计费和模型效果以百度智能云官方说明为准。

官方文档

License

本项目基于 MIT License 开源。百度智能云 API、服务条款及计费规则不属于本项目许可证范围。

About

零依赖的百度智能云 PaddleOCR-VL 文档解析 API 评估 Demo

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages