PaddleOCR:Python API 30 秒跑通你的第一个 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 就是干这个的——飞桨生态里的多语言 OCR 工具包,一句话概括:给它图片,它还文字和位置。Python 接口非常直接:几行代码就能出第一个 OCR 结果,开箱支持 80+ 种语言。
一张表看懂 PaddleOCR 能干啥
PaddleOCR 的核心不只是一个识别模型,而是一条流水线:图片进来,先做文档预处理(自动转正、去弯曲),再做text detection(找到"字在哪",即文本检测),接着做text recognition(认出"字是什么",即文本识别),最后输出文字、置信度和坐标框。你也可以把检测、识别拆出来单独用,还有 PPStructureV3 这条线专门处理文档版面和表格结构。
| 能力 | 适用场景 |
|---|---|
| 整条 OCR 流水线 | 图片 → 文本 + 置信度 + 位置框 |
| TextDetection / TextRecognition | 只要框、或只要文字,模块单用 |
| PPStructureV3 | 文档版面分析、表格结构识别 |
| 80+ 语言模型 | 中英日韩、阿拉伯文、西里尔文等 |
| CLI 与 Python 双接口 | 一行paddleocr ocr -i xxx.png快速验证 |
装完 30 秒跑通第一个任务
安装分两步:先装推理引擎,再装 PaddleOCR 本体。
python -m pip install paddlepaddle==3.2.0 python -m pip install "paddleocr[all]"跑通的最短路径:
from paddleocr import PaddleOCR ocr = PaddleOCR() # 不指定语言时默认中文模型,首次运行自动下载 img = "deploy/ios_demo/PaddleOCRDemo/Resources/SampleImages/general_ocr_002.jpg" res = ocr.predict(img)[0] for text, score in zip(res.json["rec_texts"], res.json["rec_scores"]): print(text, round(score, 4))rec_texts是识别出的文字,rec_scores是逐行置信度,rec_polys是每行的多边形坐标。想要带框的可视化图,直接res.save_to_img("output")。不想写 Python 也有 CLI:paddleocr ocr -i ./xxx.png --engine paddle。
一个行为要留意:2.x 时代传det_model_dir这类旧参数名会自动映射成新名并给出警告,老代码照着改一下就行。
最常用的 6 个参数,什么时候调
参数不用记全,日常基本就动这几个:
| 参数 | 类型 | 默认值 | 作用 | 何时调整 |
|---|---|---|---|---|
lang | str | ch | 决定自动选用哪套识别模型 | 处理非中文文档时 |
ocr_version | str | 自动 | 算法版本(PP-OCRv3~v6) | 精度与速度权衡、对齐旧模型 |
use_textline_orientation | bool | True | 按文本行方向先转正再识别 | 文字都是横排时关掉提速 |
text_det_limit_side_len | int | 736 | 检测输入的最大边长 | 小字漏检就调大 |
text_det_box_thresh | float | 0.6 | 检测框置信度阈值 | 漏检调低,误检调高 |
text_rec_score_thresh | float | 0.0 | 识别结果置信度过滤 | 噪声字多就调高 |
还有个小坑:显式传了text_detection_model_name/text_recognition_model_dir之类参数后,lang和ocr_version会被忽略并触发警告,别两头都写。
两个高频实战用法
批量处理一个图片文件夹
from pathlib import Path for res in ocr.predict_iter(Path("invoices").glob("*.png")): lines = res.json["rec_texts"] print(res.json["input_path"], "共", len(lines), "行") res.save_to_json("output") # 按需保存结构化结果坑在哪:predict会把所有图片的结果一次性装进列表,上千张图建议换成predict_iter逐张消费,内存占用会稳定得多。
只要检测,或者只要识别
from paddleocr import TextDetection, TextRecognition det = TextDetection() # 只出文本框坐标 rec = TextRecognition() # 只出文字坑在哪:TextRecognition吃的是裁剪好的文本行图片,把整页图直接丢进去,识别效果会一塌糊涂。
卡住了?常见现象与对应解法
- 首次运行卡在下载或报错→ 模型自动拉取但网络不通 → 用
text_detection_model_dir、text_recognition_model_dir指向本地模型目录。 - 小字、密集表格漏检→ 图片被缩到 limit_side_len 以下,细节丢了 → 调大
text_det_limit_side_len,必要时下调text_det_thresh(默认 0.3)。 - 框出很多噪声框→ 检测过敏感 → 把
text_det_box_thresh从 0.6 往上加一点。 - CPU 上跑得慢→ 预处理全开 → 关闭
use_doc_orientation_classify、use_doc_unwarping、use_textline_orientation,官方 quick start 的提速示例就是全关。
适合用它,和不适合的场景
通用文字——票据、表单、截图、路牌,加上多语言和轻量部署需求,PaddleOCR 直接上手,Python、C++ 推理到端侧都有现成路径。但如果你要的是复杂版面的深度理解,比如跨页表格、公式语义、图表内容抽取,别在基础流水线上硬调参数,直接看 PPStructureV3 或 PaddleOCR-VL 更合适。参数和行为细节可以去仓库里的 OCR 流水线文档 查,源码在 paddleocr/ 目录,核心逻辑都在_pipelines/和_models/下,值得翻一翻。
【免费下载链接】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),仅供参考