news 2026/9/19 22:43:09

PaddleOCR Official API CLI (`paddleocr api`) 实战指南:云端 OCR 与文档解析的命令行调用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PaddleOCR Official API CLI (`paddleocr api`) 实战指南:云端 OCR 与文档解析的命令行调用

PaddleOCR Official API CLI (paddleocr api) 实战指南:云端 OCR 与文档解析的命令行调用

【免费下载链接】PaddleOCR飞桨多语言OCR工具包(实用超轻量OCR系统,支持80+种语言识别,提供数据标注与合成工具,支持服务器、移动端、嵌入式及IoT设备端的训练与部署) Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR

PaddleOCR 官方 API CLI 是 PaddleOCR 提供的paddleocr api子命令,用于将本地文件或文件 URL 提交到托管的 PaddleOCR 云服务,异步等待任务完成后输出解析结果,全程不加载本地模型、不执行本地推理。本文将基于仓库中的 cli.en.md 文档,结合paddleocr/_api_client/的源码实现,完整讲解从安装鉴权、参数配置、任务模型选择到输出与错误处理的端到端使用方式。

一、工作原理与适用场景

paddleocr api是对 PaddleOCR 官方 API 的命令行封装,其调用链与 Python SDK 完全一致(见 client.py):

  1. 提交任务:将file_url(远程文件地址)或file_path(本地文件,上传为 multipart 表单)连同模型名、optionalPayload参数提交到任务接口;
  2. 轮询等待:以指数退避方式轮询任务状态(pendingrunningdone/failed),见 poller.py;
  3. 拉取结果:任务完成后从resultUrl指向的 JSONL 地址下载结果并解析为结构化对象(OCR 或文档解析两类),见 poller.py。

因此它的典型使用场景是:脚本化批量 OCR、快速验证云端模型效果、无需本地 GPU 与模型下载的文档解析流水线。官方默认服务地址定义在 http.py:DEFAULT_BASE_URL = "https://paddleocr.aistudio-app.com",接口路径为/api/v2/ocr/jobs

二、安装与鉴权

2.1 安装

先按 Install paddleocr 安装核心paddleocrPython 包。安装完成后,api子命令开箱即用——它属于核心包自带能力,无需安装任何额外的依赖分组

从代码看,api子命令由 _cli.py 中的_register_api_command注册,真正实现位于 paddleocr/_api_client/cli.py,使用标准argparse定义参数。

2.2 获取 Access Token

需要先在 AI Studio Access Token 页面获取访问令牌。CLI 默认从环境变量PADDLEOCR_ACCESS_TOKEN读取:

export PADDLEOCR_ACCESS_TOKEN="your-access-token"

也可以显式通过--token传入。底层 client.py 的优先级是:--token参数 >PADDLEOCR_ACCESS_TOKEN环境变量;两者都缺失时抛出AuthError("Token is required. Set PADDLEOCR_ACCESS_TOKEN or pass token=."),CLI 会将错误打印到 stderr 并以非零退出码结束。

说明:认证采用Authorization: Bearer <token>请求头,见 http.py。请求头中还可通过--client_platform自定义Client-Platform头。

三、基础用法

paddleocr api \ --model_type ocr \ --file_url https://example.com/invoice.pdf

两个强制约束(由源码 cli.py 与 _core.py 共同保证):

  • --model_type必填,只能取ocrdoc_parsing
  • --file_url--file_path二选一,同时省略或同时提供都会抛出InvalidRequestError

--file_url提交时走submit_url(JSON body),--file_pathsubmit_file(multipart 文件上传,且会先校验本地文件存在,见 http.py)。

四、常用参数详解

以下为paddleocr api的完整参数清单,默认值以 cli.py 源码为准:

参数类型默认值说明
--model_typestr必填任务类型:ocrdoc_parsing
--modelstr随任务类型而定模型名,取值见第五节;不传时按model_type使用默认模型
--file_urlstrNone待处理文件的远程 URL
--file_pathstrNone待处理文件的本地路径(上传到服务端)
--base_urlstr官方服务地址PaddleOCR API 服务基础地址;也可通过环境变量PADDLEOCR_BASE_URL设置
--tokenstrNone访问令牌(或用PADDLEOCR_ACCESS_TOKEN环境变量)
--request_timeoutfloat300.0单次 HTTP 请求的超时秒数
--poll_timeoutfloat600.0等待远端任务完成的总体超时秒数
--outputstrNoneJSON 输出文件路径;省略则打印到 stdout
--save_resourcesstrNone保存结果对象引用的资源(图片等)的目录
--overwrite_resourcesflagFalse保存资源时是否覆盖已存在的文件
--page_rangesstrNone页范围,例如"2,4-6"
--batch_idstrNone可选批标识,用于查询相关任务
--use_doc_orientation_classifyboolNone文档方向分类(True/False)
--use_doc_unwarpingboolNone文档矫正/去弯曲(True/False)
--use_textline_orientationboolNone文本行方向检测(True/False)
--text_det_limit_side_lenintNone文本检测的图像边长限制
--text_det_limit_typestrNone边长限制类型:minmax
--text_rec_score_threshfloatNone文本识别结果的分数阈值
--use_layout_detectionboolNone版面检测(doc_parsing 用)
--use_seal_recognitionboolNone印章识别(doc_parsing 用)
--use_table_recognitionboolNone表格识别(PP-StructureV3 用)
--use_formula_recognitionboolNone公式识别(PP-StructureV3 用)
--use_chart_recognitionboolNone图表识别(doc_parsing 用)
--visualizeboolNone生成结果可视化图片
--prettify_markdownboolNoneMarkdown 美化(doc_parsing 用)

参数按功能分组,与 SDK 中的选项数据类一一对应:OCR 任务使用OCROptions(见 models.py),doc_parsing中 PaddleOCR-VL 系列使用PaddleOCRVLOptions,PP-StructureV3 使用PPStructureV3Options(其中还包含layout_thresholdtemperaturetop_pmax_new_tokens等更细粒度参数,models.py 中有完整字段)。

布尔参数在命令行中使用True/False字符串,由str2bool解析;top_ptemperaturemin_pixels/max_pixels等在提交前会经过校验(如top_p必须满足0 < top_p <= 1,见 models.py),非法值会以InvalidRequestError拒绝。

五、两种任务的实战示例

5.1 OCR 示例(本地文件)

paddleocr api \ --model_type ocr \ --model PP-OCRv5 \ --file_path ./invoice.pdf \ --request_timeout 300 \ --poll_timeout 600 \ --output ocr-result.json

要点:

  • --file_path上传本地invoice.pdf
  • --request_timeout 300--poll_timeout 600分别控制单次 HTTP 请求与整体轮询的等待上限,多页大文件建议按需调大;
  • --output ocr-result.json将格式化 JSON 写入文件并打印保存路径;不写则直接打印到 stdout。

5.2 文档解析示例(远程文件 URL)

paddleocr api \ --model_type doc_parsing \ --file_url https://example.com/report.pdf \ --use_chart_recognition True \ --save_resources ./doc-assets \ --output doc-result.json

要点:

  • 输入走--file_url(服务端直接拉取,无需本地下载);
  • --use_chart_recognition True开启图表识别;
  • --save_resources ./doc-assets会把结果中引用的 Markdown 图片与输出图片下载到本地目录(注意:目标目录必须已存在,见 resources.py)。

资源保存的命名规则可在 resources.py 中确认:OCR 结果图片按ocr-page-{页号}.{扩展名}命名;文档解析结果按结果对象中的资源名(markdown_imagesoutput_images的 key)保存。默认遇到同名文件会报错,加--overwrite_resources可覆盖。

六、模型选择

任务--model_type默认模型可选模型
OCRocrPP-OCRv6PP-OCRv5,PP-OCRv5-latin,PP-OCRv6
文档解析doc_parsingPaddleOCR-VL-1.6PP-StructureV3,PaddleOCR-VL,PaddleOCR-VL-1.5,PaddleOCR-VL-1.6

以上模型集合定义在 models.py 的Model枚举与_OCR_MODELS/_DOCUMENT_PARSING_MODELS/_VL_MODELS三个集合中。

需要注意两点(对应 cli.py 的调度逻辑):

  1. 模型与任务必须匹配:例如对--model_type ocr传入PP-StructureV3,CLI 会打印Error: OCR task does not support PP-StructureV3.并以退出码 2 结束;
  2. 不同模型走不同的参数集合doc_parsing任务中,PaddleOCR-VL 系列使用PaddleOCRVLOptions(支持use_layout_detectionuse_chart_recognition等),PP-StructureV3 使用PPStructureV3Options(额外支持use_table_recognitionuse_formula_recognition等),选择不当会在提交前被resolve_document_options拒绝(见 _core.py)。

七、输出行为与结果结构

7.1 标准输出结构

成功时命令输出格式化 JSON(ensure_ascii=False, indent=2),两种任务的字段由 cli.py 定义:

OCR 输出jobId+ 每页的prunedResult(裁剪后的识别结果)与ocrImageUrl(识别可视化图地址):

{ "jobId": "xxx", "pages": [ { "prunedResult": "...", "ocrImageUrl": "https://..." } ] }

文档解析输出jobId+ 每页的markdownText(Markdown 文本)、markdownImages(Markdown 中引用的图片映射)、outputImages(输出图片映射):

{ "jobId": "xxx", "pages": [ { "markdownText": "...", "markdownImages": {}, "outputImages": {} } ] }

7.2 输出落盘行为

  • --output <path>:写入该文件并打印Result saved to: <path>;省略则直接向 stdout 打印 JSON;
  • --save_resources <dir>:将结果引用的资源下载到指定目录,并打印Resources saved to: <dir> (N files)(此提示输出到 stderr);
  • 二者可同时使用。

从源码看,这些结构对应 results.py 中的OCRResult/OCRPageDocParsingResult/DocParsingPage数据类;服务端返回的是 JSONL 格式,由parse_ocr_result/parse_doc_parsing_result逐行解析(poller.py)。

八、错误处理与排错指南

错误统一打印到 stderr,并以非零退出码返回。常见原因与对应的错误类型(定义见 errors.py):

场景错误类型说明
缺少PADDLEOCR_ACCESS_TOKEN或令牌无效/过期AuthError对应 HTTP 401/403
--model--model_type不匹配InvalidRequestErrorCLI 层直接拒绝,退出码 2
参数校验失败(如file_url/file_path同时提供)InvalidRequestError对应 HTTP 400
请求超时 / 连接失败RequestTimeoutError/NetworkError--request_timeout内未完成
轮询超过--poll_timeoutPollTimeoutError等待任务完成的总超时
远端任务执行失败JobFailedError任务状态为failed,携带服务端errorMsg
响应不符合约定 schema / 结果 JSONL 无法解析ResponseFormatError/ResultParseError一般属服务端异常或版本不匹配
每日配额超限(HTTP 429)RateLimitError见官方配额规则
服务过载或网关超时(HTTP 503/504)ServiceUnavailableError可稍后重试

排错建议顺序:先确认环境变量PADDLEOCR_ACCESS_TOKEN是否已导出 → 再确认--model--model_type匹配 → 检查--request_timeout/--poll_timeout是否对大文件过小 → 最后核对本地文件路径是否存在(--file_path不存在会抛FileNotFoundError)。

九、相关资源

  • 官方 API 总览:overview.en.md(介绍 Python / TypeScript / Go SDK 与 CLI 四种客户端形态)
  • CLI 实现源码:paddleocr/_api_client/cli.py、paddleocr/_api_client/client.py
  • 底层通信与轮询:paddleocr/_api_client/_http.py、paddleocr/_api_client/_poller.py
  • 参数与结果模型:paddleocr/_api_client/models.py、paddleocr/_api_client/results.py
  • 测试用例:tests/api_client/test_cli.py、tests/api_client/test_http.py

各模型的 API 参考文档(PP-OCRv5、PP-StructureV3、PaddleOCR-VL、PaddleOCR-VL-1.5)以及 API 配额规则与错误码说明,可在 AI Studio 官方文档区查阅,以获取最新的模型能力、配额限制与错误码定义。

【免费下载链接】PaddleOCR飞桨多语言OCR工具包(实用超轻量OCR系统,支持80+种语言识别,提供数据标注与合成工具,支持服务器、移动端、嵌入式及IoT设备端的训练与部署) Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 22:40:40

海伦公式详解:从数学推导到编程实现与数值优化

简介&#xff1a;海伦公式&#xff08;海伦-秦九韶公式&#xff09;是仅用三条边长即可求任意三角形面积的重要工具&#xff0c;这份PDF系统梳理了其历史渊源、两种经典证明、“三斜求积术”对照以及圆内接四边形面积的推广&#xff0c;适合中学数学学习者、竞赛选手和教师备课…

作者头像 李华
网站建设 2026/9/19 22:39:17

华为FTTR光猫V173/F30改公开版界面与刷一体固件实战指南

1. 华为FTTR光猫V173 F30改公开版界面这件事&#xff0c;到底在折腾什么手里有一台华为FTTR光猫V173或者F30&#xff0c;运营商定制界面锁得死死的&#xff0c;想改个桥接、想看个完整的光功率、想调个QoS策略&#xff0c;翻遍菜单都找不到入口——这事儿我猜不少折腾家庭网络的…

作者头像 李华
网站建设 2026/9/19 22:38:34

C语言课程设计:用链表与文件实现网吧管理系统

简介&#xff1a;这是一份面向C语言初学者的课程设计文档&#xff0c;完整记录了“网吧管理系统”从题目分析、功能设计到编码调试的全过程。内容覆盖会员信息录入、删除、浏览、积分计算及密码登录等核心模块&#xff0c;并系统梳理了结构体数组、函数调用、指针、文件读写等关…

作者头像 李华
网站建设 2026/9/19 22:38:12

51单片机智能抽水灌溉系统设计:从传感器选型到驱动电路与调试

简介&#xff1a;一套基于单片机的智能抽水灌溉系统毕业设计资料&#xff0c;面向电子、自动化或物联网相关专业的学生及嵌入式开发者。内容围绕AT89C51单片机、YL-69土壤湿度传感器、ADC0832模数转换器、液晶显示模块、继电器、蜂鸣器与按键等核心器件&#xff0c;系统讲解方案…

作者头像 李华
网站建设 2026/9/19 22:37:23

GitHub Copilot 遇 401?TaoToken 这样改 Base URL 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华