PaddleOCR 实战:中文文字识别从安装到部署
PaddleOCR 实战:中文文字识别从安装到部署
发票、证件、截图、表格——"把图片里的字提取出来"是需求最旺的 AI 能力之一。PaddleOCR 是中文场景最强的开源 OCR 方案,几行代码就能用。这篇从安装到部署一条龙。
:
pip install numpy paddlepaddle "paddleocr<3"
一、PaddleOCR 是什么
PaddleOCR 是百度的开源文字识别套件,两阶段架构:
图片 → 文本检测(找出文字在哪)→ 文本识别(认出是什么字)→ 结果
- 检测:定位图片里所有文字区域(文本框);
- 识别:把每个文本框里的字识别出来;
- 附带方向分类器:自动纠正旋转的文字。
模型(PP-OCRv4/v5 系列)预训练好的,直接下载使用,不用训练。

二、安装
:: 1. 装 PaddlePaddle 框架(CPU 版;有 N 卡用 paddlepaddle-gpu)
pip install paddlepaddle
:: 2. 装 PaddleOCR(本文以 2.x 稳定版为例,API 简洁)
pip install "paddleocr<3"
三、最快上手(五行代码)
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch") # 中文识别
result = ocr.ocr("收据.jpg", cls=True) # 识别
for line in result[0]:
box, (text, conf) = line[0], line[1]
print(f"{text} 置信度 {conf:.2f}")
输出示例:
北京科技有限公司 置信度 0.99
发票号码:12345678 置信度 0.98
金额合计:壹仟元整 置信度 0.95
每行包含:文本框坐标(box)、识别文本、置信度。第一次运行会自动下载模型(几十 MB)。
运行验证:准备一张带文字的图片(发票/截图/拍照),运行识别代码,期望终端逐行打印"文本 + 置信度"(如上),置信度 0.9+ 属正常水平。识别乱码先确认图片清晰、文字正立;角度斜的先旋转校正再识别。
注意:PaddleOCR 3.x 换了 API(用
ocr.predict()),本文代码对应 2.x,装的时候按上面命令固定版本,代码就能直接跑。
四、进阶用法
- 按位置排序:默认返回顺序不保证是阅读顺序,按 box 的纵坐标排序即可还原"从上到下":
lines = sorted(result[0], key=lambda l: l[0][0][1]) # 按左上角 y 排序 - 整图转文字:把识别结果拼起来,就是"图片 → 纯文本":
text = "\n".join(l[1][0] for l in lines) open("out.txt", "w", encoding="utf-8").write(text) - 表格识别:需求是"发票/表格转 Excel"?PaddleOCR 的 PP-Structure 系列支持版面分析 + 表格还原,一个接口出结构化数据。
五、部署成服务
pip install fastapi uvicorn
from fastapi import FastAPI, UploadFile
from paddleocr import PaddleOCR
import numpy as np, cv2
app = FastAPI()
ocr = PaddleOCR(use_angle_cls=True, lang="ch")
@app.post("/ocr")
async def ocr_api(file: UploadFile):
data = await file.read()
img = cv2.imdecode(np.frombuffer(data, np.uint8), cv2.IMREAD_COLOR)
result = ocr.ocr(img, cls=True)
texts = [line[1][0] for line in (result[0] or [])]
return {"texts": texts}
启动 uvicorn main:app --port 8000,客户 POST 一张图,返回文字列表——这就是能卖的"图片转文字"接口。
六、常见坑
| 坑 | 解决 |
|---|---|
| 装 paddlepaddle 报错 | 先确认 Python 版本(3.8~3.11 兼容最好);GPU 版和 CUDA 版本要匹配 |
| API 对不上(3.x) | 按文章固定 paddleocr<3;或改用 3.x 的 predict 写法 |
| 识别效果差 | 图片清晰度/角度:先旋转校正、提高分辨率再识别 |
| 中文路径报错 | 图片路径用英文;读文件用 cv2.imdecode(如上)避免编码问题 |
| 服务内存占用高 | 模型常驻内存是正常的(几百 MB);按需加载或加缓存 |
七、总结
- 一句话:PaddleOCR = 中文 OCR 的最优解之一,检测+识别开箱即用;
- 接单角度:票据/证件/截图文字提取、发票信息录入、文档数字化,全是高频需求,一个 FastAPI 接口就能交付;
- 组合拳:和 《PyTorch 模型导出 ONNX》、《Docker 容器化实战》配合,OCR 服务直接容器化交付。
觉得有用点个赞收藏,有问题评论区见,看到都会回。

浙公网安备 33010602011771号