近期更新
- 2021.4.9 支持80种语言的检测和识别
- 2021.4.9 支持轻量高精度英文模型检测识别
PaddleOCR 旨在打造一套丰富、领先、且实用的OCR工具库,不仅提供了通用场景下的中英文模型,也提供了专门在英文场景下训练的模型, 和覆盖80个语言的小语种模型。
其中英文模型支持,大小写字母和常见标点的检测识别,并优化了空格字符的识别:
小语种模型覆盖了拉丁语系、阿拉伯语系、中文繁体、韩语、日语等等:
本文档将简要介绍小语种模型的使用方法。
# cpu
pip install paddlepaddle
# gpu
pip install paddlepaddle-gpu
pip 安装
pip install "paddleocr>=2.0.6" # 推荐使用2.0.6版本
本地构建并安装
python3 setup.py bdist_wheel
pip3 install dist/paddleocr-x.x.x-py3-none-any.whl # x.x.x是paddleocr的版本号
查看帮助信息
paddleocr -h
- 整图预测(检测+识别)
Paddleocr目前支持80个语种,可以通过修改--lang参数进行切换,具体支持的语种可查看表格。
paddleocr --image_dir doc/imgs_en/254.jpg --lang=en
结果是一个list,每个item包含了文本框,文字和识别置信度
[('PHO CAPITAL', 0.95723116), [[66.0, 50.0], [327.0, 44.0], [327.0, 76.0], [67.0, 82.0]]]
[('107 State Street', 0.96311164), [[72.0, 90.0], [451.0, 84.0], [452.0, 116.0], [73.0, 121.0]]]
[('Montpelier Vermont', 0.97389287), [[69.0, 132.0], [501.0, 126.0], [501.0, 158.0], [70.0, 164.0]]]
[('8022256183', 0.99810505), [[71.0, 175.0], [363.0, 170.0], [364.0, 202.0], [72.0, 207.0]]]
[('REG 07-24-201706:59 PM', 0.93537045), [[73.0, 299.0], [653.0, 281.0], [654.0, 318.0], [74.0, 336.0]]]
[('045555', 0.99346405), [[509.0, 331.0], [651.0, 325.0], [652.0, 356.0], [511.0, 362.0]]]
[('CT1', 0.9988654), [[535.0, 367.0], [654.0, 367.0], [654.0, 406.0], [535.0, 406.0]]]
......
- 识别预测
paddleocr --image_dir doc/imgs_words_en/word_308.png --det false --lang=en
结果是一个tuple,返回识别结果和识别置信度
(0.99879867, 'LITTLE')
- 检测预测
paddleocr --image_dir doc/imgs/11.jpg --rec false
结果是一个list,每个item只包含文本框
[[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]]
[[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]]
[[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]]
......
ppocr 也支持在python脚本中运行,便于嵌入到您自己的代码中 :
- 整图预测(检测+识别)
from paddleocr import PaddleOCR, draw_ocr
# 同样也是通过修改 lang 参数切换语种
ocr = PaddleOCR(lang="korean") # 首次执行会自动下载模型文件
img_path = 'doc/imgs/korean_1.jpg'
result = ocr.ocr(img_path)
# 可通过参数控制单独执行识别、检测
# result = ocr.ocr(img_path, det=False) 只执行识别
# result = ocr.ocr(img_path, rec=False) 只执行检测
# 打印检测框和识别结果
for line in result:
print(line)
# 可视化
from PIL import Image
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='doc/fonts/korean.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
结果可视化:
ppocr 还支持方向分类, 更多使用方式请参考:whl包使用说明
ppocr 支持使用自己的数据进行自定义训练或finetune, 其中识别模型可以参考 法语配置文件 修改训练数据路径、字典等参数。
具体数据准备、训练过程可参考:文本检测、文本识别,更多功能如预测部署、 数据标注等功能可以阅读完整的文档教程。
除了安装whl包进行快速预测,ppocr 也提供了多种预测部署方式,如有需求可阅读相关文档:
部署教程默认使用中文模型,如需使用其他语种模型,请自行替换模型文件和字典:
多语言检测模型列表: 检测模型共有两个,分别为中文检测模型和英文检测模型,中文检测模型在中英文场景上表现较好,英文检测模型在中文模型的基础上,使用英文场景数据和其他语言数据finetune训练得到,在英文场景上较好。
模型名称 | 模型简介 | 配置文件 | 下载地址 |
---|---|---|---|
en_mobile_v2.0_det | 多语言检测 | en_det_mv3_db.yml | 推理模型 /训练模型 |
ch_mobile_v2.0_det | 中文检测 | ch_det_mv3_db.yml | 推理模型 / 训练模型 |
多语言识别模型列表:
模型名称 | 字典文件 | 模型简介 | 配置文件 | 下载地址 |
---|---|---|---|---|
french_mobile_v2.0_rec | ppocr/utils/dict/french_dict.txt | 法文识别 | rec_french_lite_train.yml | 推理模型 / 训练模型 |
german_mobile_v2.0_rec | ppocr/utils/dict/german_dict.txt | 德文识别 | rec_german_lite_train.yml | 推理模型 / 训练模型 |
korean_mobile_v2.0_rec | ppocr/utils/dict/korean_dict.txt | 韩文识别 | rec_korean_lite_train.yml | 推理模型 / 训练模型 |
japan_mobile_v2.0_rec | ppocr/utils/dict/japan_dict.txt | 日文识别 | rec_japan_lite_train.yml | 推理模型 / 训练模型 |
chinese_cht_mobile_v2.0_rec | ppocr/utils/dict/chinese_cht_dict.txt | 中文繁体识别 | rec_chinese_cht_lite_train.yml | 推理模型 / 训练模型 |
te_mobile_v2.0_rec | ppocr/utils/dict/te_dict.txt | 泰卢固文识别 | rec_te_lite_train.yml | 推理模型 / 训练模型 |
ka_mobile_v2.0_rec | ppocr/utils/dict/ka_dict.txt | 卡纳达文识别 | rec_ka_lite_train.yml | 推理模型 / 训练模型 |
ta_mobile_v2.0_rec | ppocr/utils/dict/ta_dict.txt | 泰米尔文识别 | rec_ta_lite_train.yml | 推理模型 / 训练模型 |
latin_mobile_v2.0_rec | ppocr/utils/dict/latin_dict.txt | 拉丁文识别 | rec_latin_lite_train.yml | 推理模型 / 训练模型 |
arabic_mobile_v2.0_rec | ppocr/utils/dict/arabic_dict.txt | 阿拉伯字母 | rec_arabic_lite_train.yml | 推理模型 / 训练模型 |
cyrillic_mobile_v2.0_rec | ppocr/utils/dict/cyrillic_dict.txt | 斯拉夫字母 | rec_cyrillic_lite_train.yml | 推理模型 / 训练模型 |
devanagari_mobile_v2.0_rec | ppocr/utils/dict/devanagari_dict.txt | 梵文字母 | rec_devanagari_lite_train.yml | 推理模型 / 训练模型 |
语种 | 描述 | 缩写 | 语种 | 描述 | 缩写 | |
---|---|---|---|---|---|---|
中文 | chinese and english | ch | 保加利亚文 | Bulgarian | bg | |
英文 | english | en | 乌克兰文 | Ukranian | uk | |
法文 | french | fr | 白俄罗斯文 | Belarusian | be | |
德文 | german | german | 泰卢固文 | Telugu | te | |
日文 | japan | japan | 阿巴扎文 | Abaza | ||
韩文 | korean | korean | 泰米尔文 | Tamil | ta | |
中文繁体 | chinese traditional | ch_tra | 南非荷兰文 | Afrikaans | af | |
意大利文 | Italian | it | 阿塞拜疆文 | Azerbaijani | az | |
西班牙文 | Spanish | es | 波斯尼亚文 | Bosnian | bs | |
葡萄牙文 | Portuguese | pt | 捷克文 | Czech | cs | |
俄罗斯文 | Russia | ru | 威尔士文 | Welsh | cy | |
阿拉伯文 | Arabic | ar | 丹麦文 | Danish | da | |
印地文 | Hindi | hi | 爱沙尼亚文 | Estonian | et | |
维吾尔 | Uyghur | ug | 爱尔兰文 | Irish | ga | |
波斯文 | Persian | fa | 克罗地亚文 | Croatian | hr | |
乌尔都文 | Urdu | ur | 匈牙利文 | Hungarian | hu | |
塞尔维亚文(latin) | Serbian(latin) | rs_latin | 印尼文 | Indonesian | id | |
欧西坦文 | Occitan | oc | 冰岛文 | Icelandic | is | |
马拉地文 | Marathi | mr | 库尔德文 | Kurdish | ku | |
尼泊尔文 | Nepali | ne | 立陶宛文 | Lithuanian | lt | |
塞尔维亚文(cyrillic) | Serbian(cyrillic) | rs_cyrillic | 拉脱维亚文 | Latvian | lv | |
毛利文 | Maori | mi | 达尔瓦文 | Dargwa | dar | |
马来文 | Malay | ms | 因古什文 | Ingush | inh | |
马耳他文 | Maltese | mt | 拉克文 | Lak | lbe | |
荷兰文 | Dutch | nl | 莱兹甘文 | Lezghian | lez | |
挪威文 | Norwegian | no | 塔巴萨兰文 | Tabassaran | tab | |
波兰文 | Polish | pl | 比尔哈文 | Bihari | bh | |
罗马尼亚文 | Romanian | ro | 迈蒂利文 | Maithili | mai | |
斯洛伐克文 | Slovak | sk | 昂加文 | Angika | ang | |
斯洛文尼亚文 | Slovenian | sl | 孟加拉文 | Bhojpuri | bho | |
阿尔巴尼亚文 | Albanian | sq | 摩揭陀文 | Magahi | mah | |
瑞典文 | Swedish | sv | 那格浦尔文 | Nagpur | sck | |
西瓦希里文 | Swahili | sw | 尼瓦尔文 | Newari | new | |
塔加洛文 | Tagalog | tl | 保加利亚文 | Goan Konkani | gom | |
土耳其文 | Turkish | tr | 沙特阿拉伯文 | Saudi Arabia | sa | |
乌兹别克文 | Uzbek | uz | 阿瓦尔文 | Avar | ava | |
越南文 | Vietnamese | vi | 阿瓦尔文 | Avar | ava | |
蒙古文 | Mongolian | mn | 阿迪赫文 | Adyghe | ady |