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

dyning's avatar
dyning committed
3
## **Live stream**:  July 21, 2020 at 8 pm BiliBili station
tink2123's avatar
tink2123 committed
4

dyning's avatar
dyning committed
5
**Live address:https://live.bilibili.com/h5/21689802**
dyning's avatar
dyning committed
6

dyning's avatar
dyning committed
7
8
## 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
9

dyning's avatar
dyning committed
10
**Recent updates**
dyning's avatar
dyning committed
11

dyning's avatar
dyning committed
12
- 2020.7.15, Add mobile App demo , support both iOS and  Android  ( based on easyedge and Paddle Lite)
dyning's avatar
dyning committed
13
- 2020.7.15, Improve the  deployment ability, add the C + +  inference , serving deployment. In addtion, the benchmarks of the ultra-lightweight OCR model are provided.
dyning's avatar
dyning committed
14
15
16
17
- 2020.7.15, Add several related datasets, data annotation and synthesis tools.
- 2020.7.9 Add a new model to support recognize the  character "space".
- 2020.7.9 Add the data augument and learning rate decay strategies during training.
- [more](./doc/doc_en/update_en.md)
dyning's avatar
dyning committed
18

MissPenguin's avatar
MissPenguin committed
19
## Features
dyning's avatar
dyning committed
20
- Ultra-lightweight OCR model, total model size is only 8.6M
dyning's avatar
dyning committed
21
    - Single model supports Chinese/English numbers combination recognition, vertical text recognition, long text recognition
dyning's avatar
dyning committed
22
23
24
25
    - 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
- Support Linux, Windows, MacOS and other systems.
dyning's avatar
dyning committed
26

dyning's avatar
dyning committed
27
## Visualization
tink2123's avatar
tink2123 committed
28

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

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

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

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

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

 Also, you can scan the QR code blow to install the App (**Android support only**)
dyning's avatar
dyning committed
40
41
42
43
44

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

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

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

dyning's avatar
dyning committed
49
### Supported Models:
dyning's avatar
dyning committed
50

dyning's avatar
dyning committed
51
|Model Name|Description |Detection Model link|Recognition Model link| Support for space Recognition Model link|
dyning's avatar
dyning committed
52
|-|-|-|-|-|
dyning's avatar
dyning committed
53
54
|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
55
56
57
58
59
60
61
62
63
64
65
66
67
68


## 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
69
- Deployment
dyning's avatar
dyning committed
70
71
72
73
74
75
    - [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
76
- Datasets
dyning's avatar
dyning committed
77
78
79
80
81
    - [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
82
- [FAQ](#FAQ)
dyning's avatar
dyning committed
83
84
85
86
- Visualization
    - [Ultra-lightweight Chinese/English OCR Visualization](#UCOCRVIS)
    - [General Chinese/English OCR Visualization](#GeOCRVIS)
    - [Chinese/English OCR Visualization (Support Space Recognization )](#SpaceOCRVIS)
MissPenguin's avatar
MissPenguin committed
87
88
89
90
- [Community](#Community)
- [References](./doc/doc_en/reference_en.md)
- [License](#LICENSE)
- [Contribution](#CONTRIBUTION)
dyning's avatar
dyning committed
91
92
93
94
95

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

PaddleOCR open source text detection algorithms list:
tink2123's avatar
tink2123 committed
96
- [x]  EAST([paper](https://arxiv.org/abs/1704.03155))
tink2123's avatar
fix url  
tink2123 committed
97
- [x]  DB([paper](https://arxiv.org/abs/1911.08947))
dyning's avatar
dyning committed
98
- [ ]  SAST([paper](https://arxiv.org/abs/1908.05498))(Baidu Self-Research, comming soon)
tink2123's avatar
tink2123 committed
99

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

dyning's avatar
dyning committed
102
|Model|Backbone|precision|recall|Hmean|Download link|
103
|-|-|-|-|-|-|
dyning's avatar
dyning committed
104
105
106
107
|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)|
LDOUBLEV's avatar
LDOUBLEV committed
108

dyning's avatar
dyning committed
109
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
110
|Model|Backbone|Configuration file|Pre-trained model|
tink2123's avatar
tink2123 committed
111
|-|-|-|-|
dyning's avatar
dyning committed
112
113
|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
114

dyning's avatar
dyning committed
115
* 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
116

dyning's avatar
dyning committed
117
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
118

dyning's avatar
dyning committed
119
120
<a name="TEXTRECOGNITIONALGORITHM"></a>
## Text Recognition Algorithm
tink2123's avatar
tink2123 committed
121

dyning's avatar
dyning committed
122
PaddleOCR open-source text recognition algorithms list:
tink2123's avatar
tink2123 committed
123
124
125
126
- [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))
dyning's avatar
dyning committed
127
- [ ]  SRN([paper](https://arxiv.org/abs/2003.12294))(Baidu Self-Research, comming soon)
tink2123's avatar
tink2123 committed
128

dyning's avatar
dyning committed
129
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
130

dyning's avatar
dyning committed
131
|Model|Backbone|Avg Accuracy|Module combination|Download link|
dyning's avatar
dyning committed
132
|-|-|-|-|-|
dyning's avatar
dyning committed
133
134
135
136
137
138
139
140
141
|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)|

dyning's avatar
dyning committed
142
We use [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) dataset and cropout 30w  traning 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:
dyning's avatar
dyning committed
143
|Model|Backbone|Configuration file|Pre-trained model|
tink2123's avatar
tink2123 committed
144
|-|-|-|-|
dyning's avatar
dyning committed
145
146
|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
147

dyning's avatar
dyning committed
148
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
149

dyning's avatar
dyning committed
150
151
152
<a name="ENDENDOCRALGORITHM"></a>
## END-TO-END OCR Algorithm
- [ ]  [End2End-PSL](https://arxiv.org/abs/1909.07808)(Baidu Self-Research, comming soon)
tink2123's avatar
tink2123 committed
153

dyning's avatar
dyning committed
154
## Visualization
dyning's avatar
dyning committed
155

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

dyning's avatar
dyning committed
159
<div align="center">
dyning's avatar
dyning committed
160
    <img src="doc/imgs_results/1.jpg" width="800">
dyning's avatar
dyning committed
161
</div>
tink2123's avatar
tink2123 committed
162

dyning's avatar
dyning committed
163
164
<a name="GeOCRVIS"></a>
### 2. General Chinese/English OCR Visualization [more](./doc/doc_en/visualization_en.md)
dyning's avatar
dyning committed
165
166
167
168

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

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

dyning's avatar
dyning committed
173
174
175
<div align="center">
    <img src="doc/imgs_results/chinese_db_crnn_server/en_paper.jpg" width="800">
</div>
tink2123's avatar
tink2123 committed
176

dyning's avatar
dyning committed
177
<a name="FAQ"></a>
dyning's avatar
dyning committed
178

dyning's avatar
dyning committed
179
## FAQ
dyning's avatar
dyning committed
180
181
182
183
184
185
186
187
188
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
189

dyning's avatar
dyning committed
190
    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
191

dyning's avatar
dyning committed
192
4. Release time of self-developed algorithm
tink2123's avatar
tink2123 committed
193

dyning's avatar
dyning committed
194
    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
195

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

dyning's avatar
dyning committed
198
<a name="Community"></a>
MissPenguin's avatar
MissPenguin committed
199
## Community
dyning's avatar
dyning committed
200
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
201

dyning's avatar
dyning committed
202
203
204
<div align="center">
<img src="./doc/joinus.jpg"  width = "200" height = "200" />
</div>
MissPenguin's avatar
MissPenguin committed
205

dyning's avatar
dyning committed
206
<a name="LICENSE"></a>
MissPenguin's avatar
MissPenguin committed
207
## License
dyning's avatar
dyning committed
208
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
209

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

dyning's avatar
dyning committed
214
215
216
217
218
- Many thanks to [Khanh Tran](https://github.com/xxxpsyduck) for contributing the English documentation.
- 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.