PaddleOCR-json | RapidOCR-json | |
---|---|---|
CPU要求 | CPU必须具有AVX指令集。不支持以下CPU: | 无特殊要求 👍 |
凌动Atom、安腾Itanium、赛扬Celeron、奔腾Pentium | ||
推理加速库 | mkldnn 👍 | 无 |
识别速度 | 快(启用mkldnn加速)👍 | 中等 |
初始化耗时 | 约0.6秒 | 0.1秒内,快 👍 |
组件体积(压缩) | 100MB | 70MB 👍 |
组件体积(部署) | 369MB | 80MB 👍 |
CPU占用 | 较高 | 较低,对低配机器友好 |
建议预留内存 | 2000MB | 800MB 👍 |
支持:Win7 x64、Linux x64、Docker
这是一个基于PaddleOCR v2.6和v2.8 cpp_infer的离线图片OCR文字识别程序,可以快速为你的程序添加OCR功能。它可以作为子进程被上层程序调用,也可以作为独立进程通过TCP调用。本项目提供了Python等语言的API,你可以忽略技术细节,通过两行代码使用它。
本项目旨在提供一个封装好的OCR引擎组件,使得没有C++编程基础的开发者也可以用其他语言简单地调用OCR,享受更快的运行效率和更便捷的打包部署方式。
系统:x86-64的Windows 7+、Linux。
若Win7报错"计算机中丢失VCOMP140.DLL",请安装VC运行库。
CPU必须具有AVX指令集。常见的家用CPU一般都满足该条件。
AVX | 支持的产品系列 | 不支持 |
---|---|---|
Intel | 酷睿Core,至强Xeon | 凌动Atom,安腾Itanium,赛扬Celeron,奔腾Pentium |
AMD | 推土机架构及之后的产品,如锐龙Ryzen、速龙Athlon、FX等 | K10架构及之前的产品 |
如果需要在无AVX的CPU上使用OCR,可以看看RapidOCR-json。
下载可执行文件包:
PaddleOCR-json.exe -image_path="test.jpg"
调用流程大体分为以下几步。不同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')
Python API 提供了丰富的附加模块:便于开发者调试观察的可视化模块;以及来自Umi-OCR的文本块后处理(段落合并)技术。详细使用方法请参见 资源目录
</details>npm install paddleocrjson
</details>const OCR = require('paddleocrjson'); // const OCR = require('paddleocrjson/es5'); // ES5 const ocr = new OCR('PaddleOCR-json.exe', [/* '-port=9985', '-addr=loopback' */], { cwd: './PaddleOCR-json', }, false); ocr.flush({ image_path: 'path/to/test/img' }) .then((data) => console.log(data)); .then(() => ocr.terminate());
欢迎补充!请参考 详细使用指南。
键名称 | 默认值 | 值说明 |
---|---|---|
config_path | "" | 可以指定不同语言的配置文件路径,识别多国语言。详情见下节。 |
models_path | "" | 可以指定语言库 models 文件夹的路径。详情见下节。 |
det | true | 启用det目标识别。如果你的图片中只含一行文本,且没有空白区域,那么可以关闭det以加快速度。 |
cls | false | 启用cls方向分类,识别方向不是正朝上的图片。 |
use_angle_cls | false | 启用方向分类,必须与cls同时设置。 |
enable_mkldnn | true | 启用CPU推理加速,关掉可以减少内存占用,但会降低速度。 |
limit_side_len | 960 | 对图像边长进行限制,降低分辨率,加快速度。 |
如果对大图/长图的识别率低,可增大 limit_side_len 的值。 | ||
建议为 32 和 48 的公倍数,如 960, 2880, 4320 |
更多参数详见 args.cpp。(不支持其中GPU相关、表格识别相关的参数。)
Release压缩包中,默认附带了 简中,繁中,英,日,韩
的语言库与配置文件,在 models
目录下。
models
目录中,每一个 config_xxx.txt
是一组语言配置文件(如英文是config_en.txt
)。只需将这个文件的路径传入 config_path
参数,即可切换为对应的语言。以 Python API 为例:
enginePath = "D:/Test/PaddleOCR_json.exe" # 引擎路径 argument = {"config_path": "models/config_en.txt"} # 指定使用英文库 ocr = GetOcrApi(enginePath, argument)
如果 config_path 为空,PaddleOCR-json 将默认加载并使用简体中文识别库。
然而,当使用默认路径或单独设置 config_path
时,PaddleOCR-json 可执行文件必须与语言库位于同一目录下。例如:
.
├─ PaddleOCR-json.exe
└─ models
├─ ...
如果语言库位于另一个文件夹中,PaddleOCR-json 将无法找到它。
在这种情况下,你可以 使用 models_path
参数来设置语言库的位置。PaddleOCR-json 将以用户设置的语言库位置为基准来加载其他文件。
这样,即使 PaddleOCR-json 与语言库不在同一目录下也能正常使用。以 Python API 为例:
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)
本项目支持 PP-OCR 系列官方 V2~V4 模型,或符合PP规范的自训练模型。更多 PP-OCR 系列官方模型下载:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/models_list.md
如果你想删除不用的语言库文件以减少软件体积,可以删除 models
目录中包含对应语言前缀和 rec_infer 后缀的文件夹。比如要删除日 语japan
相关的库,只需删除这个文件夹:
japan_PP-OCRv3_rec_infer
一组语言的rec库大约占用10MB空间(未压缩)。如果删除到只剩1组语言,可以节省约60MB空间。
请不要删除cls_infer和det_infer后缀的文件夹,这是所有语言共用的检测/方向分类库。
通过API调用一次OCR,无论成功与否,都会返回一个字典。
字典中,根包含两个元素:状态码code
和内容data
。
状态码code
为整数,每种状态码对应一种情况:
100
识别到文字text
:文本内容,字符串。box
:文本包围盒,长度为4的数组,分别为左上角、右上角、右下角、左下角的[x,y]
。整数。score
:识别置信度,0~1的浮点数。越接近1表示文字内容越可信。cls
和 use_angle_cls
,那么会多出两个元素:
cls_label
:方向分类标签,整数。0 表示文字方向是顺时针 0°或90°,1 表示 180°或270°。cls_score
:方向分类置信度,0~1的浮点数。越接近1表示方向分类越可信。 {'code':100,'data':[{'box':[[13,5],[161,5],[161,27],[13,27]],'score':0.9996442794799805,'text':'飞舞的因果交流'}]}
101
未识别到文字No text found in image. Path:"图片路径"
{'code':101,'data':'No text found in image. Path: "D:\\空白.png"'}
200
图片路径不存在Image path dose not exist. Path:"图片路径".
{'code':200,'data':'Image path dose not exist. Path: "D:\\不存在.png"'}
使用 Unicode UTF-8 提供全球语言支持
)时,不能读入含emoji等特殊字符的路径(如😀.png
)。但一般的中文及其他 Unicode 字符路径是没问题的,不受系统区域及默认编码影响。201
图片路径string无法转换到wstringImage path failed to convert to utf-16 wstring. Path: "图片路径".
202
图片路径存在,但无法打开文件图片打开失败。路径:"图片路径"。
203
图片打开成功,但读取到的内容无法被OpenCV解码图片解码失败。路径:"图片路径"。
.png
改成.jpg或.exe
),也可以被正常识别。210
剪贴板打开失败