README.md 14.7 KB
Newer Older
dyning's avatar
dyning committed
1
English | [简体中文](README_cn.md)
2

dyning's avatar
dyning committed
3
4
## Introduction
PaddleOCR aims to create rich, leading, and practical OCR tools that help users train better models and apply them into practice.
dyning's avatar
dyning committed
5

dyning's avatar
dyning committed
6
**Recent updates**
dyning's avatar
dyning committed
7
- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer  [PaddleOCR Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md)
licx's avatar
licx committed
8
- 2020.8.16, Release text detection algorithm [SAST](https://arxiv.org/abs/1908.05498) and text recognition algorithm [SRN](https://arxiv.org/abs/2003.12294)
dyning's avatar
dyning committed
9
- 2020.7.23, Release the playback and PPT of live class on BiliBili station, PaddleOCR Introduction, [address](https://aistudio.baidu.com/aistudio/course/introduce/1519)
dyning's avatar
dyning committed
10
- 2020.7.15, Add mobile App demo , support both iOS and  Android  ( based on easyedge and Paddle Lite)
Karl Horky's avatar
Karl Horky committed
11
- 2020.7.15, Improve the  deployment ability, add the C + +  inference , serving deployment. In addition, the benchmarks of the ultra-lightweight OCR model are provided.
dyning's avatar
dyning committed
12
13
- 2020.7.15, Add several related datasets, data annotation and synthesis tools.
- [more](./doc/doc_en/update_en.md)
dyning's avatar
dyning committed
14

MissPenguin's avatar
MissPenguin committed
15
## Features
dyning's avatar
dyning committed
16
- Ultra-lightweight OCR model, total model size is only 8.6M
dyning's avatar
dyning committed
17
    - Single model supports Chinese/English numbers combination recognition, vertical text recognition, long text recognition
dyning's avatar
dyning committed
18
19
20
    - Detection model DB (4.1M) + recognition model CRNN (4.5M)
- Various text detection algorithms: EAST, DB
- Various text recognition algorithms: Rosetta, CRNN, STAR-Net, RARE
Karl Horky's avatar
Karl Horky committed
21
- Support Linux, Windows, macOS and other systems.
dyning's avatar
dyning committed
22

dyning's avatar
dyning committed
23
## Visualization
tink2123's avatar
tink2123 committed
24

dyning's avatar
dyning committed
25
![](doc/imgs_results/11.jpg)
LDOUBLEV's avatar
LDOUBLEV committed
26

dyning's avatar
dyning committed
27
![](doc/imgs_results/img_10.jpg)
dyning's avatar
dyning committed
28

dyning's avatar
dyning committed
29
[More visualization](./doc/doc_en/visualization_en.md)
dyning's avatar
dyning committed
30

dyning's avatar
dyning committed
31
You can also quickly experience the ultra-lightweight OCR : [Online Experience](https://www.paddlepaddle.org.cn/hub/scene/ocr)
dyning's avatar
dyning committed
32

Karl Horky's avatar
Karl Horky committed
33
Mobile DEMO experience (based on EasyEdge and Paddle-Lite, supports iOS and Android systems): [Sign in to the website to obtain the QR code for  installing the App](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite)
dyning's avatar
dyning committed
34

Karl Horky's avatar
Karl Horky committed
35
 Also, you can scan the QR code below to install the App (**Android support only**)
dyning's avatar
dyning committed
36
37
38
39
40

<div align="center">
<img src="./doc/ocr-android-easyedge.png"  width = "200" height = "200" />
</div>

dyning's avatar
dyning committed
41
- [**OCR Quick Start**](./doc/doc_en/quickstart_en.md)
dyning's avatar
dyning committed
42

dyning's avatar
dyning committed
43
<a name="Supported-Chinese-model-list"></a>
dyning's avatar
dyning committed
44

dyning's avatar
dyning committed
45
### Supported Models:
dyning's avatar
dyning committed
46

dyning's avatar
dyning committed
47
|Model Name|Description |Detection Model link|Recognition Model link| Support for space Recognition Model link|
dyning's avatar
dyning committed
48
|-|-|-|-|-|
dyning's avatar
dyning committed
49
50
|db_crnn_mobile|ultra-lightweight OCR model|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar) / [pre-train model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance.tar)
|db_crnn_server|General OCR model|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance_infer.tar) / [pre-train model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance.tar)
dyning's avatar
dyning committed
51
52
53
54
55
56
57
58
59
60
61
62
63
64


## Tutorials
- [Installation](./doc/doc_en/installation_en.md)
- [Quick Start](./doc/doc_en/quickstart_en.md)
- Algorithm introduction
    - [Text Detection Algorithm](#TEXTDETECTIONALGORITHM)
    - [Text Recognition Algorithm](#TEXTRECOGNITIONALGORITHM)
    - [END-TO-END OCR Algorithm](#ENDENDOCRALGORITHM)
- Model training/evaluation
    - [Text Detection](./doc/doc_en/detection_en.md)
    - [Text Recognition](./doc/doc_en/recognition_en.md)
    - [Yml Configuration](./doc/doc_en/config_en.md)
    - [Tricks](./doc/doc_en/tricks_en.md)
dyning's avatar
dyning committed
65
- Deployment
dyning's avatar
dyning committed
66
67
68
69
70
71
    - [Python Inference](./doc/doc_en/inference_en.md)
    - [C++ Inference](./deploy/cpp_infer/readme_en.md)
    - [Serving](./doc/doc_en/serving_en.md)
    - [Mobile](./deploy/lite/readme_en.md)
    - Model Quantization and Compression (coming soon)
    - [Benchmark](./doc/doc_en/benchmark_en.md)
dyning's avatar
dyning committed
72
- Datasets
dyning's avatar
dyning committed
73
74
75
76
77
    - [General OCR Datasets(Chinese/English)](./doc/doc_en/datasets_en.md)
    - [HandWritten_OCR_Datasets(Chinese)](./doc/doc_en/handwritten_datasets_en.md)
    - [Various OCR Datasets(multilingual)](./doc/doc_en/vertical_and_multilingual_datasets_en.md)
    - [Data Annotation Tools](./doc/doc_en/data_annotation_en.md)
    - [Data Synthesis Tools](./doc/doc_en/data_synthesis_en.md)
dyning's avatar
dyning committed
78
- [FAQ](#FAQ)
dyning's avatar
dyning committed
79
80
81
- Visualization
    - [Ultra-lightweight Chinese/English OCR Visualization](#UCOCRVIS)
    - [General Chinese/English OCR Visualization](#GeOCRVIS)
Karl Horky's avatar
Karl Horky committed
82
    - [Chinese/English OCR Visualization (Support Space Recognition )](#SpaceOCRVIS)
MissPenguin's avatar
MissPenguin committed
83
84
85
86
- [Community](#Community)
- [References](./doc/doc_en/reference_en.md)
- [License](#LICENSE)
- [Contribution](#CONTRIBUTION)
dyning's avatar
dyning committed
87
88
89
90
91

<a name="TEXTDETECTIONALGORITHM"></a>
## Text Detection Algorithm

PaddleOCR open source text detection algorithms list:
tink2123's avatar
tink2123 committed
92
- [x]  EAST([paper](https://arxiv.org/abs/1704.03155))
tink2123's avatar
fix url  
tink2123 committed
93
- [x]  DB([paper](https://arxiv.org/abs/1911.08947))
licx's avatar
licx committed
94
- [x]  SAST([paper](https://arxiv.org/abs/1908.05498))(Baidu Self-Research)
tink2123's avatar
tink2123 committed
95

dyning's avatar
dyning committed
96
On the ICDAR2015 dataset, the text detection result is as follows:
tink2123's avatar
tink2123 committed
97

dyning's avatar
dyning committed
98
|Model|Backbone|precision|recall|Hmean|Download link|
99
|-|-|-|-|-|-|
dyning's avatar
dyning committed
100
101
102
103
|EAST|ResNet50_vd|88.18%|85.51%|86.82%|[Download link](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)|
|EAST|MobileNetV3|81.67%|79.83%|80.74%|[Download link](https://paddleocr.bj.bcebos.com/det_mv3_east.tar)|
|DB|ResNet50_vd|83.79%|80.65%|82.19%|[Download link](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)|
|DB|MobileNetV3|75.92%|73.18%|74.53%|[Download link](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)|
licx's avatar
licx committed
104
|SAST|ResNet50_vd|92.18%|82.96%|87.33%|[Download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_icdar2015.tar)|
LDOUBLEV's avatar
LDOUBLEV committed
105

licx's avatar
licx committed
106
107
108
109
110
111
On Total-Text dataset, the text detection result is as follows:

|Model|Backbone|precision|recall|Hmean|Download link|
|-|-|-|-|-|-|
|SAST|ResNet50_vd|88.74%|79.80%|84.03%|[Download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)|

112
113
114
**Note:** Additional data, like icdar2013, icdar2017, COCO-Text, ArT, was added to the model training of SAST. Download English public dataset in organized format used by PaddleOCR from [Baidu Drive](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (download code: 2bpi).

For use of [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) street view dataset with a total of 3w training data,the related configuration and pre-trained models for text detection task are as follows:  
dyning's avatar
dyning committed
115
|Model|Backbone|Configuration file|Pre-trained model|
tink2123's avatar
tink2123 committed
116
|-|-|-|-|
dyning's avatar
dyning committed
117
118
|ultra-lightweight OCR model|MobileNetV3|det_mv3_db.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)|
|General OCR model|ResNet50_vd|det_r50_vd_db.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)|
tink2123's avatar
tink2123 committed
119

dyning's avatar
dyning committed
120
* Note: For the training and evaluation of the above DB model, post-processing parameters box_thresh=0.6 and unclip_ratio=1.5 need to be set. If using different datasets and different models for training, these two parameters can be adjusted for better result.
tink2123's avatar
tink2123 committed
121

dyning's avatar
dyning committed
122
For the training guide and use of PaddleOCR text detection algorithms, please refer to the document [Text detection model training/evaluation/prediction](./doc/doc_en/detection_en.md)
tink2123's avatar
tink2123 committed
123

dyning's avatar
dyning committed
124
125
<a name="TEXTRECOGNITIONALGORITHM"></a>
## Text Recognition Algorithm
tink2123's avatar
tink2123 committed
126

dyning's avatar
dyning committed
127
PaddleOCR open-source text recognition algorithms list:
tink2123's avatar
tink2123 committed
128
129
130
131
- [x]  CRNN([paper](https://arxiv.org/abs/1507.05717))
- [x]  Rosetta([paper](https://arxiv.org/abs/1910.05085))
- [x]  STAR-Net([paper](http://www.bmva.org/bmvc/2016/papers/paper043/index.html))
- [x]  RARE([paper](https://arxiv.org/abs/1603.03915v1))
licx's avatar
licx committed
132
- [x]  SRN([paper](https://arxiv.org/abs/2003.12294))(Baidu Self-Research)
tink2123's avatar
tink2123 committed
133

dyning's avatar
dyning committed
134
Refer to [DTRB](https://arxiv.org/abs/1904.01906), the training and evaluation result of these above text recognition (using MJSynth and SynthText for training, evaluate on IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE) is as follow:
tink2123's avatar
tink2123 committed
135

dyning's avatar
dyning committed
136
|Model|Backbone|Avg Accuracy|Module combination|Download link|
dyning's avatar
dyning committed
137
|-|-|-|-|-|
dyning's avatar
dyning committed
138
139
140
141
142
143
144
145
|Rosetta|Resnet34_vd|80.24%|rec_r34_vd_none_none_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_none_ctc.tar)|
|Rosetta|MobileNetV3|78.16%|rec_mv3_none_none_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_none_none_ctc.tar)|
|CRNN|Resnet34_vd|82.20%|rec_r34_vd_none_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_bilstm_ctc.tar)|
|CRNN|MobileNetV3|79.37%|rec_mv3_none_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_none_bilstm_ctc.tar)|
|STAR-Net|Resnet34_vd|83.93%|rec_r34_vd_tps_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_ctc.tar)|
|STAR-Net|MobileNetV3|81.56%|rec_mv3_tps_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_ctc.tar)|
|RARE|Resnet34_vd|84.90%|rec_r34_vd_tps_bilstm_attn|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_attn.tar)|
|RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)|
licx's avatar
licx committed
146
147
|SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[Download link](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)|

148
**Note:** SRN model uses data expansion method to expand the two training sets mentioned above, and the expanded data can be downloaded from [Baidu Drive](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA) (download code: y3ry).
licx's avatar
licx committed
149
150

The average accuracy of the two-stage training in the original paper is 89.74%, and that of one stage training in paddleocr is 88.33%. Both pre-trained weights can be downloaded [here](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar).
dyning's avatar
dyning committed
151

Karl Horky's avatar
Karl Horky committed
152
We use [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) dataset and cropout 30w  training data from original photos by using position groundtruth and make some calibration needed. In addition, based on the LSVT corpus, 500w synthetic data is generated to train the model. The related configuration and pre-trained models are as follows:
licx's avatar
licx committed
153

dyning's avatar
dyning committed
154
|Model|Backbone|Configuration file|Pre-trained model|
tink2123's avatar
tink2123 committed
155
|-|-|-|-|
dyning's avatar
dyning committed
156
157
|ultra-lightweight OCR model|MobileNetV3|rec_chinese_lite_train.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar) & [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance.tar)|
|General OCR model|Resnet34_vd|rec_chinese_common_train.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance_infer.tar) & [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance.tar)|
tink2123's avatar
tink2123 committed
158

dyning's avatar
dyning committed
159
Please refer to the document for training guide and use of PaddleOCR text recognition algorithms [Text recognition model training/evaluation/prediction](./doc/doc_en/recognition_en.md)
tink2123's avatar
tink2123 committed
160

dyning's avatar
dyning committed
161
162
<a name="ENDENDOCRALGORITHM"></a>
## END-TO-END OCR Algorithm
Karl Horky's avatar
Karl Horky committed
163
- [ ]  [End2End-PSL](https://arxiv.org/abs/1909.07808)(Baidu Self-Research, coming soon)
tink2123's avatar
tink2123 committed
164

dyning's avatar
dyning committed
165
## Visualization
dyning's avatar
dyning committed
166

dyning's avatar
dyning committed
167
168
<a name="UCOCRVIS"></a>
### 1.Ultra-lightweight Chinese/English OCR Visualization [more](./doc/doc_en/visualization_en.md)
tink2123's avatar
tink2123 committed
169

dyning's avatar
dyning committed
170
<div align="center">
dyning's avatar
dyning committed
171
    <img src="doc/imgs_results/1.jpg" width="800">
dyning's avatar
dyning committed
172
</div>
tink2123's avatar
tink2123 committed
173

dyning's avatar
dyning committed
174
175
<a name="GeOCRVIS"></a>
### 2. General Chinese/English OCR Visualization [more](./doc/doc_en/visualization_en.md)
dyning's avatar
dyning committed
176
177
178
179

<div align="center">
    <img src="doc/imgs_results/chinese_db_crnn_server/11.jpg" width="800">
</div>
180

dyning's avatar
dyning committed
181
182
<a name="SpaceOCRVIS"></a>
### 3.Chinese/English OCR Visualization (Space_support) [more](./doc/doc_en/visualization_en.md)
tink2123's avatar
tink2123 committed
183

dyning's avatar
dyning committed
184
185
186
<div align="center">
    <img src="doc/imgs_results/chinese_db_crnn_server/en_paper.jpg" width="800">
</div>
tink2123's avatar
tink2123 committed
187

dyning's avatar
dyning committed
188
<a name="FAQ"></a>
dyning's avatar
dyning committed
189

dyning's avatar
dyning committed
190
## FAQ
dyning's avatar
dyning committed
191
192
193
194
195
196
197
198
199
1. Error when using attention-based recognition model: KeyError: 'predict'

    The inference of recognition model based on attention loss is still being debugged. For Chinese text recognition, it is recommended to choose the recognition model based on CTC loss first. In practice, it is also found that the recognition model based on attention loss is not as effective as the one based on CTC loss.

2. About inference speed

    When there are a lot of texts in the picture, the prediction time will increase. You can use `--rec_batch_num` to set a smaller prediction batch size. The default value is 30, which can be changed to 10 or other values.

3. Service deployment and mobile deployment
tink2123's avatar
tink2123 committed
200

dyning's avatar
dyning committed
201
    It is expected that the service deployment based on Serving and the mobile deployment based on Paddle Lite will be released successively in mid-to-late June. Stay tuned for more updates.
MissPenguin's avatar
MissPenguin committed
202

dyning's avatar
dyning committed
203
4. Release time of self-developed algorithm
tink2123's avatar
tink2123 committed
204

dyning's avatar
dyning committed
205
    Baidu Self-developed algorithms such as SAST, SRN and end2end PSL will be released in June or July. Please be patient.
MissPenguin's avatar
MissPenguin committed
206

dyning's avatar
dyning committed
207
[more](./doc/doc_en/FAQ_en.md)
dyning's avatar
dyning committed
208

dyning's avatar
dyning committed
209
<a name="Community"></a>
MissPenguin's avatar
MissPenguin committed
210
## Community
dyning's avatar
dyning committed
211
Scan  the QR code below with your wechat and completing the questionnaire, you can access to offical technical exchange group.
dyning's avatar
dyning committed
212

dyning's avatar
dyning committed
213
214
215
<div align="center">
<img src="./doc/joinus.jpg"  width = "200" height = "200" />
</div>
MissPenguin's avatar
MissPenguin committed
216

dyning's avatar
dyning committed
217
<a name="LICENSE"></a>
MissPenguin's avatar
MissPenguin committed
218
## License
dyning's avatar
dyning committed
219
This project is released under <a href="https://github.com/PaddlePaddle/PaddleOCR/blob/master/LICENSE">Apache 2.0 license</a>
dyning's avatar
dyning committed
220

dyning's avatar
dyning committed
221
<a name="CONTRIBUTION"></a>
MissPenguin's avatar
MissPenguin committed
222
## Contribution
dyning's avatar
dyning committed
223
We welcome all the contributions to PaddleOCR and appreciate for your feedback very much.
tink2123's avatar
tink2123 committed
224

dyning's avatar
dyning committed
225
- Many thanks to [Khanh Tran](https://github.com/xxxpsyduck) and [Karl Horky](https://github.com/karlhorky) for contributing and revising the English documentation.
dyning's avatar
dyning committed
226
227
228
229
- Many thanks to [zhangxin](https://github.com/ZhangXinNan) for contributing the new visualize function、add .gitgnore and discard set PYTHONPATH manually.
- Many thanks to [lyl120117](https://github.com/lyl120117) for contributing the code for printing the network structure.
- Thanks [xiangyubo](https://github.com/xiangyubo) for contributing the handwritten Chinese OCR datasets.
- Thanks [authorfu](https://github.com/authorfu) for contributing Android demo  and [xiadeye](https://github.com/xiadeye) contributing iOS demo, respectively.
littletomatodonkey's avatar
littletomatodonkey committed
230
- Thanks [BeyondYourself](https://github.com/BeyondYourself) for contributing many great suggestions and simplifying part of the code style.
LDOUBLEV's avatar
LDOUBLEV committed
231
- Thanks [tangmq](https://gitee.com/tangmq) for contributing Dockerized deployment services to PaddleOCR and supporting the rapid release of callable Restful API services.