Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleOCR
提交
1018d7ef
P
PaddleOCR
项目概览
PaddlePaddle
/
PaddleOCR
大约 1 年 前同步成功
通知
1528
Star
32962
Fork
6643
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
108
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
108
Issue
108
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1018d7ef
编写于
5月 24, 2021
作者:
L
LDOUBLEV
浏览文件
操作
浏览文件
下载
差异文件
fix conflict
上级
6a3c583d
323986a7
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
79 addition
and
32 deletion
+79
-32
README_ch.md
README_ch.md
+4
-3
deploy/hubserving/ocr_det/params.py
deploy/hubserving/ocr_det/params.py
+0
-5
deploy/lite/readme.md
deploy/lite/readme.md
+2
-2
deploy/lite/readme_en.md
deploy/lite/readme_en.md
+2
-1
doc/doc_ch/FAQ.md
doc/doc_ch/FAQ.md
+65
-17
doc/doc_ch/multi_languages.md
doc/doc_ch/multi_languages.md
+3
-3
doc/joinus.PNG
doc/joinus.PNG
+0
-0
tools/infer/predict_det.py
tools/infer/predict_det.py
+3
-1
未找到文件。
README_ch.md
浏览文件 @
1018d7ef
...
...
@@ -8,7 +8,8 @@ PaddleOCR同时支持动态图与静态图两种编程范式
-
静态图版本:develop分支
**近期更新**
-
2021.5.11
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,总数218个,每周一都会更新,欢迎大家持续关注。
-
2021.5.17
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,总数223个,每周一都会更新,欢迎大家持续关注。
-
PaddleOCR研发团队对最新发版内容技术深入解读,4月13日晚上19:00,
[
直播地址
](
https://live.bilibili.com/21689802
)
。
-
2021.4.8 release 2.1版本,新增AAAI 2021论文
[
端到端识别算法PGNet
](
./doc/doc_ch/pgnet.md
)
开源,
[
多语言模型
](
./doc/doc_ch/multi_languages.md
)
支持种类增加到80+。
-
2021.2.8 正式发布PaddleOCRv2.0(branch release/2.0)并设置为推荐用户使用的默认分支. 发布的详细内容,请参考: https://github.com/PaddlePaddle/PaddleOCR/releases/tag/v2.0.0
-
2021.1.26,28,29 PaddleOCR官方研发团队带来技术深入解读三日直播课,1月26日、28日、29日晚上19:30,
[
直播地址
](
https://live.bilibili.com/21689802
)
...
...
@@ -103,8 +104,8 @@ PaddleOCR同时支持动态图与静态图两种编程范式
-
[
效果展示
](
#效果展示
)
-
FAQ
-
[
【精选】OCR精选10个问题
](
./doc/doc_ch/FAQ.md
)
-
[
【理论篇】OCR通用4
1
个问题
](
./doc/doc_ch/FAQ.md
)
-
[
【实战篇】PaddleOCR实战1
47
个问题
](
./doc/doc_ch/FAQ.md
)
-
[
【理论篇】OCR通用4
3
个问题
](
./doc/doc_ch/FAQ.md
)
-
[
【实战篇】PaddleOCR实战1
70
个问题
](
./doc/doc_ch/FAQ.md
)
-
[
技术交流群
](
#欢迎加入PaddleOCR技术交流群
)
-
[
参考文献
](
./doc/doc_ch/reference.md
)
-
[
许可证书
](
#许可证书
)
...
...
deploy/hubserving/ocr_det/params.py
浏览文件 @
1018d7ef
...
...
@@ -24,11 +24,6 @@ def read_params():
cfg
.
use_dilation
=
False
cfg
.
det_db_score_mode
=
"fast"
# #EAST parmas
# cfg.det_east_score_thresh = 0.8
# cfg.det_east_cover_thresh = 0.1
# cfg.det_east_nms_thresh = 0.2
cfg
.
use_pdserving
=
False
cfg
.
use_tensorrt
=
False
...
...
deploy/lite/readme.md
浏览文件 @
1018d7ef
...
...
@@ -125,7 +125,7 @@ cd build.opt/lite/api/
```
# 【推荐】 下载PaddleOCR V2.0版本的中英文 inference模型
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_det_slim_infer.tar && tar xf ch_ppocr_mobile_v2.0_det_slim_infer.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_rec_slim_nfer.tar && tar xf ch_ppocr_mobile_v2.0_rec_slim_infer.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_rec_slim_
i
nfer.tar && tar xf ch_ppocr_mobile_v2.0_rec_slim_infer.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_cls_slim_infer.tar && tar xf ch_ppocr_mobile_v2.0_cls_slim_infer.tar
# 转换V2.0检测模型
./opt --model_file=./ch_ppocr_mobile_v2.0_det_slim_infer/inference.pdmodel --param_file=./ch_ppocr_mobile_v2.0_det_slim_infer/inference.pdiparams --optimize_out=./ch_ppocr_mobile_v2.0_det_slim_opt --valid_targets=arm --optimize_out_type=naive_buffer
...
...
@@ -238,7 +238,7 @@ use_direction_classify 0 # 是否使用方向分类器,0表示不使用,1
上述步骤完成后就可以使用adb将文件push到手机上运行,步骤如下:
```
# 执行编译,得到可执行文件ocr_db_crnn
# 执行编译,得到可执行文件ocr_db_crnn
,第一次执行此命令会下载opencv等依赖库,下载完成后,需要再执行一次
make -j
# 将编译的可执行文件移动到debug文件夹中
...
...
deploy/lite/readme_en.md
浏览文件 @
1018d7ef
...
...
@@ -237,7 +237,8 @@ use_direction_classify 0 # Whether to use the direction classifier, 0 means no
After the above steps are completed, you can use adb to push the file to the phone to run, the steps are as follows:
```
# Execute the compilation and get the executable file ocr_db_crnn
# Execute the compilation and get the executable file ocr_db_crnn.
# The first execution of this command will download dependent libraries such as opencv. After the download is complete, you need to execute it again
make -j
# Move the compiled executable file to the debug folder
mv ocr_db_crnn ./debug/
...
...
doc/doc_ch/FAQ.md
浏览文件 @
1018d7ef
...
...
@@ -9,40 +9,55 @@
## PaddleOCR常见问题汇总(持续更新)
*
[
近期更新(2021.5.1
1
)
](
#近期更新
)
*
[
近期更新(2021.5.1
7
)
](
#近期更新
)
*
[
【精选】OCR精选10个问题
](
#OCR精选10个问题
)
*
[
【理论篇】OCR通用43个问题
](
#OCR通用问题
)
*
[
基础知识13题
](
#基础知识
)
*
[
数据集9题
](
#数据集2
)
*
[
模型训练调优21题
](
#模型训练调优2
)
*
[
【实战篇】PaddleOCR实战1
65
个问题
](
#PaddleOCR实战问题
)
*
[
使用咨询6
5
题
](
#使用咨询
)
*
[
【实战篇】PaddleOCR实战1
70
个问题
](
#PaddleOCR实战问题
)
*
[
使用咨询6
8
题
](
#使用咨询
)
*
[
数据集18题
](
#数据集3
)
*
[
模型训练调优36题
](
#模型训练调优3
)
*
[
预测部署4
6
题
](
#预测部署3
)
*
[
预测部署4
8
题
](
#预测部署3
)
<a
name=
"近期更新"
></a>
## 近期更新(2021.5.1
1
)
## 近期更新(2021.5.1
7
)
#### Q3.1.64: config yml文件中的ratio_list参数的作用是什么?
**A**
: 在动态图中,ratio_list在有多个数据源的情况下使用,ratio_list中的每个值是每个epoch从对应数据源采样数据的比例。如ratio_list=[0.3,0.2],label_file_list=['data1','data2'],代表每个epoch的训练数据包含data1 30%的数据,和data2里 20%的数据,ratio_list中数值的和不需要等于1。ratio_list和label_file_list的长度必须一致。
### Q3.1.66: iaa里面添加的数据增强方式,是每张图像训练都会做增强还是随机的?如何添加一个数据增强方法?
静态图检测数据采样的逻辑与动态图不同,但基本不影响训练精度。
**A**
:iaa增强的训练配置参考:
[
链接
](
https://github.com/PaddlePaddle/PaddleOCR/blob/0ccc1720c252beb277b9e522a1b228eb6abffb8a/configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml#L82
)
其中{ 'type': Fliplr, 'args': { 'p': 0.5 } } p是概率。新增数据增强,可以参考这个
[
方法
](
https://github.com/PaddlePaddle/PaddleOCR/blob/release%2F2.1/doc/doc_ch/add_new_algorithm.md#%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD%E5%92%8C%E5%A4%84%E7%90%86
)
在静态图中,使用 检测 dataloader读取数据时,会先设置每个epoch的数据量,比如这里设置为1000,ratio_list中的值表示在1000中的占比,比如ratio_list是[0.3, 0.7],则表示使用两个数据源,每个epoch从第一个数据源采样1000
*
0.3=300张图,从第二个数据源采样700张图。ratio_list的值的和也不需要等于1
。
### Q3.1.67: PGNet训练中文弯曲数据集,可视化时弯曲文本无法显示
。
**A**
: 可能是因为安装的OpenCV里,cv2.putText不能显示中文的原因,可以尝试用Pillow来添加显示中文,需要改draw_e2e_res函数里面的代码,可以参考如下代码:
```
box = box.astype(np.int32).reshape((-1, 1, 2))
cv2.polylines(src_im, [box], True, color=(255, 255, 0), thickness=2)
#### Q3.1.65: 支持动态图模型的android和ios demo什么时候上线?
**A**
: 支持动态图模型的android demo已经合入dygraph分支,欢迎试用(https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/deploy/android_demo/README.md); ios demo暂时未提供动态图模型版本,可以基于静态图版本(https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/ios_demo)自行改造。
from PIL import ImageFont, ImageDraw, Image
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img)
fontStyle = ImageFont.truetype(
"font/msyh.ttc", 16, encoding="utf-8")
draw.text((int(box[0, 0, 0]), int(box[0, 0, 1])), text, (0, 255, 0), font=fontStyle)
#### Q3.3.36: 训练starnet网络,印章数据可以和非弯曲数据一起训练吗。
**A**
: 可以的,starnet里的tps模块会对印章图片进行校正,使其和非弯曲的图片一样。
src_im= cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
```
### Q3.1.68: 用PGNet做进行端到端训练时,数据集标注的点的个数必须都是统一一样的吗? 能不能随意标点数,只要能够按顺时针从左上角开始标这样?
**A**
: 目前代码要求标注为统一的点数。
#### Q3.4.47: 请教如何优化检测阶段时长?
**A**
: 预测单张图会慢一点,如果批量预测,第一张图比较慢,后面就快了,因为最开始一些初始化操作比较耗时。服务部署的话,访问一次后,后面再访问就不会初始化了,推理的话每次都需要初始化的。
### Q3.4.48: paddle serving 本地启动调用失败,怎么判断是否正常工作?
**A**
:没有打印出预测结果,说明启动失败。可以参考这篇文档重新配置下动态图的paddle serving:https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/deploy/pdserving/README_CN.md
#### Q3.4.45: win下C++部署中文识别乱码的解决方法
**A**
: win下编码格式不是utf8,而ppocr_keys_v1.txt的编码格式的utf8,将ppocr_keys_v1.txt 的编码从utf-8修改为 Ansi 编码格式就行了
#### Q3.4.46: windows 3060显卡GPU模式启动 加载模型慢。
**A**
: 30系列的显卡需要使用cuda11。
<a
name=
"OCR精选10个问题"
></a>
## 【精选】OCR精选10个问题
...
...
@@ -653,6 +668,31 @@ repo中config.yml文件的前后处理参数和inference预测默认的超参数
#### Q3.1.65: 支持动态图模型的android和ios demo什么时候上线??
**A**
: 支持动态图模型的android demo已经合入dygraph分支,欢迎试用(https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/deploy/android_demo/README.md); ios demo暂时未提供动态图模型版本,可以基于静态图版本(https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/ios_demo)自行改造。
### Q3.1.66: iaa里面添加的数据增强方式,是每张图像训练都会做增强还是随机的?如何添加一个数据增强方法?
**A**
:iaa增强的训练配置参考:https://github.com/PaddlePaddle/PaddleOCR/blob/0ccc1720c252beb277b9e522a1b228eb6abffb8a/configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml#L82,
其中{ 'type': Fliplr, 'args': { 'p': 0.5 } } p是概率。新增数据增强,可以参考这个方法:https://github.com/PaddlePaddle/PaddleOCR/blob/release%2F2.1/doc/doc_ch/add_new_algorithm.md#%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD%E5%92%8C%E5%A4%84%E7%90%86
### Q3.1.67: PGNet训练中文弯曲数据集,可视化时弯曲文本无法显示。
**A**
: 可能是因为安装的OpenCV里,cv2.putText不能显示中文的原因,可以尝试用Pillow来添加显示中文,需要改draw_e2e_res函数里面的代码,可以参考如下代码:
```
box = box.astype(np.int32).reshape((-1, 1, 2))
cv2.polylines(src_im, [box], True, color=(255, 255, 0), thickness=2)
from PIL import ImageFont, ImageDraw, Image
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img)
fontStyle = ImageFont.truetype(
"font/msyh.ttc", 16, encoding="utf-8")
draw.text((int(box[0, 0, 0]), int(box[0, 0, 1])), text, (0, 255, 0), font=fontStyle)
src_im= cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
```
### Q3.1.68: 用PGNet做进行端到端训练时,数据集标注的点的个数必须都是统一一样的吗? 能不能随意标点数,只要能够按顺时针从左上角开始标这样?
**A**
: 目前代码要求标注为统一的点数。
<a
name=
"数据集3"
></a>
### 数据集
...
...
@@ -1141,3 +1181,11 @@ nvidia-smi --lock-gpu-clocks=1590 -i 0
#### Q3.4.46: windows 3060显卡GPU模式启动 加载模型慢。
**A**
: 30系列的显卡需要使用cuda11。
#### Q3.4.47: 请教如何优化检测阶段时长?
**A**
: 预测单张图会慢一点,如果批量预测,第一张图比较慢,后面就快了,因为最开始一些初始化操作比较耗时。服务部署的话,访问一次后,后面再访问就不会初始化了,推理的话每次都需要初始化的。
### Q3.4.48: paddle serving 本地启动调用失败,怎么判断是否正常工作?
**A**
:没有打印出预测结果,说明启动失败。可以参考这篇文档重新配置下动态图的paddle serving:https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/deploy/pdserving/README_CN.md
doc/doc_ch/multi_languages.md
浏览文件 @
1018d7ef
...
...
@@ -118,7 +118,7 @@ paddleocr --image_dir doc/imgs_words_en/word_308.png --det false --lang=en
*
检测预测
```
paddleocr --image_dir
PaddleOCR/
doc/imgs/11.jpg --rec false
paddleocr --image_dir doc/imgs/11.jpg --rec false
```
结果是一个list,每个item只包含文本框
...
...
@@ -142,7 +142,7 @@ from paddleocr import PaddleOCR, draw_ocr
# 同样也是通过修改 lang 参数切换语种
ocr = PaddleOCR(lang="korean") # 首次执行会自动下载模型文件
img_path = 'doc/imgs/korean_1.jpg
'
img_path = 'doc/imgs/korean_1.jpg'
result = ocr.ocr(img_path)
# 可通过参数控制单独执行识别、检测
# result = ocr.ocr(img_path, det=False) 只执行识别
...
...
@@ -157,7 +157,7 @@ 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='
/path/to/PaddleOCR/
doc/fonts/korean.ttf')
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')
```
...
...
doc/joinus.PNG
查看替换文件 @
6a3c583d
浏览文件 @
1018d7ef
108.0 KB
|
W:
|
H:
102.9 KB
|
W:
|
H:
2-up
Swipe
Onion skin
tools/infer/predict_det.py
浏览文件 @
1018d7ef
...
...
@@ -65,7 +65,9 @@ class TextDetector(object):
postprocess_params
[
"max_candidates"
]
=
1000
postprocess_params
[
"unclip_ratio"
]
=
args
.
det_db_unclip_ratio
postprocess_params
[
"use_dilation"
]
=
args
.
use_dilation
postprocess_params
[
"score_mode"
]
=
args
.
det_db_score_mode
if
hasattr
(
args
,
"det_db_score_mode"
):
postprocess_params
[
"score_mode"
]
=
args
.
det_db_score_mode
elif
self
.
det_algorithm
==
"EAST"
:
postprocess_params
[
'name'
]
=
'EASTPostProcess'
postprocess_params
[
"score_thresh"
]
=
args
.
det_east_score_thresh
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录