PaddleOCR-json是一款基于PaddleOCR v2.6及v2.8 cpp_infer的离线图片OCR文字识别程序,支持Windows系统和Linux系统,可以直接运行,也提供API接口供开发者调用。
项目概述
PaddleOCR-json是一个封装好的OCR引擎组件,使得没有C++编程基础的开发者可以用其他语言来简单地调用OCR,享受到更快的运行效率、更便捷的打包和部署手段。
核心优势
- 方便:部署方便,解压即用,无需安装和配置环境,无需联网。发布方便,可嵌入程序包也可作为外部组件。
- 高速:基于PPOCR C++版引擎,识别效率高于Python版本PPOCR及其他一些由Python处理任务流的OCR引擎。
- 精准:附带PPOCR-v3/v4识别库,对非常规字形(手写、艺术字、小字、杂乱背景等)也具有不错的识别率。
- 灵活:可以以多种方式指定OCR任务,支持识别本地图片路径、Base64编码的图片、TCP局域网调用。
系统要求
兼容性说明
- 系统支持:x86-64的Windows 7+、Linux系统
- CPU要求:CPU必须具有AVX指令集。常见的家用CPU一般都满足该条件
| 品牌 | AVX支持 | 支持的产品系列 | 不支持 |
|---|---|---|---|
| Intel | 支持 | 酷睿Core,至强Xeon | 凌动Atom,安腾Itanium,赛扬Celeron,奔腾Pentium |
| AMD | 支持 | 推土机架构及之后的产品,如锐龙Ryzen、速龙Athlon、FX等 | K10架构及之前的产品 |
快速开始
准备工作
首先需要下载项目文件。项目仓库地址为:https://gitcode.com/gh_mirrors/pa/PaddleOCR-json
简单试用
最基本的用法是通过命令行直接识别图片:
PaddleOCR-json.exe -image_path="test.jpg"
API调用详解
Python API使用
Python API提供了丰富的功能模块,包括可视化调试模块和文本块后处理技术。
from PPOCR_api import GetOcrApi
# 初始化识别器对象,传入PaddleOCR_json.exe的路径
ocr = GetOcrApi("……\PaddleOCR-json.exe")
# 识别图片,传入图片路径
getObj = ocr.run(r'………\测试.png')
print(f'图片识别完毕,状态码:{getObj["code"]} 结果:\n{getObj["data"]}\n')
Node.js API使用
Node.js API提供了现代JavaScript和TypeScript支持。
const OCR = require('paddleocrjson');
const ocr = new OCR('PaddleOCR-json.exe', [], {
cwd: './PaddleOCR-json',
}, false);
ocr.flush({ image_path: 'path/to/test/img' })
.then((data) => console.log(data))
.then(() => ocr.terminate());
其他语言API
项目还提供了PowerShell、Java、.NET、Rust、Go等多种语言的API接口,方便不同技术栈的开发者使用。
配置参数说明
常用配置参数
| 键名称 | 默认值 | 值说明 |
|---|---|---|
| ensure_ascii | true | 启用ascii编码转换,提高编码兼容性 |
| config_path | "" | 指定不同语言的配置文件路径 |
| models_path | "" | 指定语言库文件夹的路径 |
| det | true | 启用det目标识别 |
| cls | false | 启用cls方向分类 |
| use_angle_cls | false | 启用方向分类 |
| enable_mkldnn | true | 启用CPU推理加速 |
| limit_side_len | 960 | 对图像边长进行限制,降低分辨率,加快速度 |
语言库与切换识别语言
项目默认附带简体中文、繁体中文、英文、日文、韩文的语言库与配置文件,存放在models目录下。
每个config_xxx.txt文件是一组语言配置文件,只需将这个文件的路径传入config_path参数,即可切换为对应的语言。
enginePath = "D:/Test/PaddleOCR_json.exe" # 引擎路径
argument = {"config_path": "models/config_en.txt"} # 指定使用英文库
ocr = GetOcrApi(enginePath, argument)
如果config_path留空,则PaddleOCR-json默认加载并使用简体中文识别库。
当语言库在另一个文件夹下时,可以使用models_path参数来设置语言库的位置:
enginePath = "D:/Test/PaddleOCR_json.exe" # 引擎路径
modelsPath = "D:/Hello/models" # 语言库路径
argument = {
"models_path": "D:/Hello/models",
"config_path": "D:/Hello/models/config_en.txt",
}
ocr = GetOcrApi(enginePath, argument)
交互方式详解
单次识图模式
在启动参数中指定image_path=图片路径即可。程序会识别该图片,输出识别内容,然后结束进程。
示例:
PaddleOCR-json.exe -image_path="D:/test/test 1.jpg"
管道模式
交互遵循对话原则,对每一行(以\n结尾)输入,必然会产生有且仅有一行输出。
Python示例:
ret = subprocess.Popen(
"程序目录/PaddleOCR-json.exe", # 引擎位置
cwd="程序目录", # 引擎工作目录
stdout=subprocess.PIPE, # 重定向标准输出
stdin=subprocess.PIPE # 重定向标准输入
)
TCP套接字服务器模式
套接字模式的指令格式与管道模式完全一致,只是启动参数有所区别,交互方式换成TCP。
启用方式:
PaddleOCR-json.exe -port=8888
返回值说明
通过API调用一次OCR,无论成功与否,都会返回一个字典,包含状态码code和内容data。
主要状态码
- 100:识别到文字,data内容为包含文本信息的数组
- 101:未识别到文字,这是正常现象
- 200:图片路径不存在
- 201:图片路径string无法转换到wstring
- 202:图片路径存在,但无法打开文件
- 203:图片打开成功,但读取到的内容无法被opencv解码
语言库管理
删除不需要的语言库
若希望删除不使用的语言库文件以减少软件体积,可以删除models目录中含有对应语言前缀和rec_infer后缀的文件夹。
例如删除日语japan相关的库,只需删除文件夹: japan_PP-OCRv3_rec_infer
一组语言的rec库大约占用10MB空间(未压缩)。若删除到仅剩1组语言,可以节省约60MB空间。
注意:请不要删除cls_infer及det_infer后缀的文件夹,这是所有语言公用的检测/方向分类库。
项目构建指南
稳定版(基于PP-OCR v2.6)
- Windows平台构建步骤:参考cpp/README.md
- Linux平台构建步骤:参考cpp/README-linux.md
- Docker部署:参考cpp/README-docker.md
开发版(基于PP-OCR v2.8)
- Windows平台构建步骤:参考cpp/README.md
- Linux平台构建步骤:参考cpp/README-linux.md
- Docker部署:参考cpp/README-docker.md
常见问题解答
初始化失败怎么办?
如果程序初始化失败,请检查:
- CPU是否支持AVX指令集
- 系统是否为x86-64架构
- 必要的运行库是否已安装
识别效果不佳怎么办?
可以尝试以下方法:
- 调整limit_side_len参数,对大图/长图可增大此值
- 开启cls和use_angle_cls参数进行方向矫正
- 更换不同的语言模型库
通过本教程,您应该能够快速上手PaddleOCR-json,并充分利用其强大的离线OCR文字识别功能。无论是桌面应用还是服务集成,都能轻松应对各种文字识别需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



