README.md 14.3 KB
Newer Older
WenmuZhou's avatar
WenmuZhou committed
1
2
English | [简体中文](README_ch.md)

Leif's avatar
Leif committed
3
4
5
6
7
8
9
10
11
12
13
14
15
<p align="center">
 <img src="./doc/PaddleOCR_log.png" align="middle" width = "600"/>
<p align="center">
<p align="left">
    <a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache%202-dfd.svg"></a>
    <a href="https://github.com/PaddlePaddle/PaddleOCR/releases"><img src="https://img.shields.io/github/v/release/PaddlePaddle/PaddleOCR?color=ffa"></a>
    <a href=""><img src="https://img.shields.io/badge/python-3.7+-aff.svg"></a>
    <a href=""><img src="https://img.shields.io/badge/os-linux%2C%20win%2C%20mac-pink.svg"></a>
    <a href=""><img src="https://img.shields.io/pypi/format/PaddleOCR?color=c77"></a>
    <a href="https://pypi.org/project/PaddleOCR/"><img src="https://img.shields.io/pypi/dm/PaddleOCR?color=9cf"></a>
    <a href="https://github.com/PaddlePaddle/PaddleOCR/stargazers"><img src="https://img.shields.io/github/stars/PaddlePaddle/PaddleOCR?color=ccf"></a>
</p>

WenmuZhou's avatar
WenmuZhou committed
16
## Introduction
Leif's avatar
Leif committed
17

LDOUBLEV's avatar
LDOUBLEV committed
18
PaddleOCR aims to create multilingual, awesome, leading, and practical OCR tools that help users train better models and apply them into practice.
WenmuZhou's avatar
WenmuZhou committed
19

MissPenguin's avatar
MissPenguin committed
20
<div align="center">
littletomatodonkey's avatar
littletomatodonkey committed
21
    <img src="./doc/imgs_results/PP-OCRv3/en/en_4.png" width="800">
MissPenguin's avatar
MissPenguin committed
22
23
24
</div>

<div align="center">
littletomatodonkey's avatar
fix doc  
littletomatodonkey committed
25
    <img src="./doc/imgs_results/ch_ppocr_mobile_v2.0/00006737.jpg" width="800">
MissPenguin's avatar
MissPenguin committed
26
</div>
grasswolfs's avatar
grasswolfs committed
27

MissPenguin's avatar
MissPenguin committed
28
## Recent updates
MissPenguin's avatar
MissPenguin committed
29
30
31
32
33
- **🔥2022.5.9 Release PaddleOCR [release/2.5](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.5)**
    - Release [PP-OCRv3](./doc/doc_en/ppocr_introduction_en.md#pp-ocrv3): With comparable speed, the effect of Chinese scene is further improved by 5% compared with PP-OCRv2, the effect of English scene is improved by 11%, and the average recognition accuracy of 80 language multilingual models is improved by more than 5%.
    - Release [PPOCRLabelv2](./PPOCRLabel): Add the annotation function for table recognition task, key information extraction task and irregular text image.
    - Release interactive e-book [*"Dive into OCR"*](./doc/doc_en/ocr_book_en.md), covers the cutting-edge theory and code practice of OCR full stack technology.
- 2021.12.21 Release PaddleOCR [release/2.4](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.4)
MissPenguin's avatar
MissPenguin committed
34
35
    - Release 1 text detection algorithm ([PSENet](./doc/doc_en/algorithm_det_psenet_en.md)), 3 text recognition algorithms ([NRTR](./doc/doc_en/algorithm_rec_nrtr_en.md)[SEED](./doc/doc_en/algorithm_rec_seed_en.md)[SAR](./doc/doc_en/algorithm_rec_nrtr_en.md)).
    - Release 1 key information extraction algorithm [SDMGR](./ppstructure/docs/kie_en.md) and 3 [DocVQA](./ppstructure/vqa) algorithms (LayoutLM, LayoutLMv2, LayoutXLM).
MissPenguin's avatar
MissPenguin committed
36
37
38
39
- 2021.9.7 Release PaddleOCR [release/2.3](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.3)
    - Release [PP-OCRv2](./doc/doc_en/ppocr_introduction_en.md#pp-ocrv2). The inference speed of PP-OCRv2 is 220% higher than that of PP-OCR server in CPU device. The F-score of PP-OCRv2 is 7% higher than that of PP-OCR mobile.
- 2021.8.3 Release PaddleOCR [release/2.2](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.2)
    - Release a new structured documents analysis toolkit, i.e., [PP-Structure](./ppstructure/README.md), support layout analysis and table recognition (One-key to export chart images to Excel files).
Leif's avatar
Leif committed
40

WenmuZhou's avatar
WenmuZhou committed
41
42
- [more](./doc/doc_en/update_en.md)

43

MissPenguin's avatar
update  
MissPenguin committed
44
## Features
WenmuZhou's avatar
WenmuZhou committed
45

MissPenguin's avatar
update  
MissPenguin committed
46
PaddleOCR support a variety of cutting-edge algorithms related to OCR, and developed industrial featured models/solution [PP-OCR](./doc/doc_en/ppocr_introduction_en.md) and [PP-Structure](./ppstructure/README.md) on this basis, and get through the whole process of data production, model training, compression, inference and deployment.
dyning's avatar
dyning committed
47

MissPenguin's avatar
update  
MissPenguin committed
48
![](./doc/features_en.png)
LDOUBLEV's avatar
LDOUBLEV committed
49

MissPenguin's avatar
update  
MissPenguin committed
50
> It is recommended to start with the “quick experience” in the document tutorial
LDOUBLEV's avatar
LDOUBLEV committed
51
52


WenmuZhou's avatar
WenmuZhou committed
53
## Quick Experience
dyning's avatar
dyning committed
54

MissPenguin's avatar
update  
MissPenguin committed
55
56
57
58
59
60
61
62
63
64
65
66
- Web online experience for the ultra-lightweight OCR: [Online Experience](https://www.paddlepaddle.org.cn/hub/scene/ocr)
- 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)
- One line of code quick use: [Quick Start](./doc/doc_en/quickstart_en.md)


<a name="book"></a>
## E-book: *Dive Into OCR*
- [Dive Into OCR 📚](./doc/doc_en/ocr_book_en.md)


<a name="Community"></a>
## Community
dyning's avatar
dyning committed
67

MissPenguin's avatar
update  
MissPenguin committed
68
- **Join us**👬: Scan the QR code below with your Wechat, you can join the official technical discussion group. Looking forward to your participation.
tink2123's avatar
tink2123 committed
69

LDOUBLEV's avatar
LDOUBLEV committed
70

grasswolfs's avatar
grasswolfs committed
71
<div align="center">
MissPenguin's avatar
update  
MissPenguin committed
72
<img src="https://raw.githubusercontent.com/PaddlePaddle/PaddleOCR/dygraph/doc/joinus.PNG"  width = "200" height = "200" />
grasswolfs's avatar
grasswolfs committed
73
</div>
WenmuZhou's avatar
WenmuZhou committed
74
<a name="Supported-Chinese-model-list"></a>
Evezerest's avatar
Evezerest committed
75

76
## PP-OCR Series Model List(Update on September 8th)
WenmuZhou's avatar
WenmuZhou committed
77
78
79

| Model introduction                                           | Model name                   | Recommended scene | Detection model                                              | Direction classifier                                         | Recognition model                                            |
| ------------------------------------------------------------ | ---------------------------- | ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
littletomatodonkey's avatar
littletomatodonkey committed
80
81
| Chinese and English ultra-lightweight PP-OCRv3 model(16.2M)     | ch_PP-OCRv3_xx          | Mobile & Server | [inference model](https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_distill_train.tar) | [inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar) | [inference model](https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_train.tar) |
| English ultra-lightweight PP-OCRv3 model(13.4M)     | en_PP-OCRv3_xx          | Mobile & Server | [inference model](https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_det_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_det_distill_train.tar) | [inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar) | [inference model](https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_train.tar) |
LDOUBLEV's avatar
reset  
LDOUBLEV committed
82
| Chinese and English ultra-lightweight PP-OCRv2 model(11.6M) |  ch_PP-OCRv2_xx |Mobile & Server|[inference model](https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_det_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_det_distill_train.tar)| [inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar) |[inference model](https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_rec_train.tar)|
Leif's avatar
Leif committed
83
| Chinese and English ultra-lightweight PP-OCR model (9.4M)       | ch_ppocr_mobile_v2.0_xx      | Mobile & server   |[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_train.tar)|[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar) |[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_train.tar)      |
84
| Chinese and English general PP-OCR model (143.4M)               | ch_ppocr_server_v2.0_xx      | Server            |[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_train.tar)    |[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar)    |[inference model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_infer.tar) / [trained model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_train.tar)  |
LDOUBLEV's avatar
LDOUBLEV committed
85

WenmuZhou's avatar
WenmuZhou committed
86

MissPenguin's avatar
update  
MissPenguin committed
87
88
89
- For more model downloads (including multiple languages), please refer to [PP-OCR series model downloads](./doc/doc_en/models_list_en.md).
- For a new language request, please refer to [Guideline for new language_requests](#language_requests).
- For structural document analysis models, please refer to [PP-Structure models](./ppstructure/docs/models_list_en.md).
WenmuZhou's avatar
WenmuZhou committed
90
91

## Tutorials
Leif's avatar
Leif committed
92
- [Environment Preparation](./doc/doc_en/environment_en.md)
MissPenguin's avatar
update  
MissPenguin committed
93
94
95
96
- [PP-OCR 🔥](./doc/doc_en/ppocr_introduction_en.md)
    - [Quick Start](./doc/doc_en/quickstart_en.md)
    - [Model Zoo](./doc/doc_en/models_en.md)
    - [Model training](./doc/doc_en/training_en.md)
Leif's avatar
Leif committed
97
98
        - [Text Detection](./doc/doc_en/detection_en.md)
        - [Text Recognition](./doc/doc_en/recognition_en.md)
99
        - [Text Direction Classification](./doc/doc_en/angle_class_en.md)
MissPenguin's avatar
update  
MissPenguin committed
100
    - Model Compression
Leif's avatar
Leif committed
101
102
        - [Model Quantization](./deploy/slim/quantization/README_en.md)
        - [Model Pruning](./deploy/slim/prune/README_en.md)
MissPenguin's avatar
update  
MissPenguin committed
103
        - [Knowledge Distillation](./doc/doc_en/knowledge_distillation_en.md)
MissPenguin's avatar
update  
MissPenguin committed
104
    - [Inference and Deployment](./deploy/README.md)
MissPenguin's avatar
update  
MissPenguin committed
105
106
        - [Python Inference](./doc/doc_en/inference_ppocr_en.md)
        - [C++ Inference](./deploy/cpp_infer/readme.md)
Leif's avatar
Leif committed
107
        - [Serving](./deploy/pdserving/README.md)
MissPenguin's avatar
update  
MissPenguin committed
108
109
        - [Mobile](./deploy/lite/readme.md)
        - [Paddle2ONNX](./deploy/paddle2onnx/readme.md)
Leif's avatar
Leif committed
110
        - [Benchmark](./doc/doc_en/benchmark_en.md)  
MissPenguin's avatar
update  
MissPenguin committed
111
112
113
- [PP-Structure 🔥](./ppstructure/README.md)
    - [Quick Start](./ppstructure/docs/quickstart_en.md)
    - [Model Zoo](./ppstructure/docs/models_list_en.md)
114
    - [Model training](./doc/doc_en/training_en.md)  
MissPenguin's avatar
update  
MissPenguin committed
115
116
117
118
119
120
121
122
123
124
125
126
127
        - [Layout Parser](./ppstructure/layout/README.md)
        - [Table Recognition](./ppstructure/table/README.md)
        - [DocVQA](./ppstructure/vqa/README.md)
        - [Key Information Extraction](./ppstructure/docs/kie_en.md)
    - [Inference and Deployment](./deploy/README.md)
        - [Python Inference](./ppstructure/docs/inference_en.md)
        - [C++ Inference]()
        - [Serving](./deploy/pdserving/README.md)
- [Academic algorithms](./doc/doc_en/algorithms_en.md)
    - [Text detection](./doc/doc_en/algorithm_overview_en.md)
    - [Text recognition](./doc/doc_en/algorithm_overview_en.md)
    - [End-to-end](./doc/doc_en/algorithm_overview_en.md)
    - [Add New Algorithms to PaddleOCR](./doc/doc_en/add_new_algorithm_en.md)
LDOUBLEV's avatar
LDOUBLEV committed
128
- Data Annotation and Synthesis
grasswolfs's avatar
grasswolfs committed
129
    - [Semi-automatic Annotation Tool: PPOCRLabel](./PPOCRLabel/README.md)
dyning's avatar
dyning committed
130
    - [Data Synthesis Tool: Style-Text](./StyleText/README.md)
grasswolfs's avatar
grasswolfs committed
131
132
    - [Other Data Annotation Tools](./doc/doc_en/data_annotation_en.md)
    - [Other Data Synthesis Tools](./doc/doc_en/data_synthesis_en.md)
WenmuZhou's avatar
WenmuZhou committed
133
- Datasets
134
135
136
    - [General OCR Datasets(Chinese/English)](doc/doc_en/dataset/datasets_en.md)
    - [HandWritten_OCR_Datasets(Chinese)](doc/doc_en/dataset/handwritten_datasets_en.md)
    - [Various OCR Datasets(multilingual)](doc/doc_en/dataset/vertical_and_multilingual_datasets_en.md)
MissPenguin's avatar
MissPenguin committed
137
138
139
    - [layout analysis](doc/doc_en/dataset/layout_datasets_en.md)
    - [table recognition](doc/doc_en/dataset/table_datasets_en.md)
    - [DocVQA](doc/doc_en/dataset/docvqa_datasets_en.md)
MissPenguin's avatar
update  
MissPenguin committed
140
- [Code Structure](./doc/doc_en/tree_en.md)
WenmuZhou's avatar
WenmuZhou committed
141
- [Visualization](#Visualization)
MissPenguin's avatar
update  
MissPenguin committed
142
- [Community](#Community)
LDOUBLEV's avatar
LDOUBLEV committed
143
- [New language requests](#language_requests)
WenmuZhou's avatar
WenmuZhou committed
144
145
146
- [FAQ](./doc/doc_en/FAQ_en.md)
- [References](./doc/doc_en/reference_en.md)
- [License](#LICENSE)
dyning's avatar
dyning committed
147

tink2123's avatar
tink2123 committed
148

MissPenguin's avatar
update  
MissPenguin committed
149
<a name="Visualization"></a>
WenmuZhou's avatar
WenmuZhou committed
150
## Visualization [more](./doc/doc_en/visualization_en.md)
MissPenguin's avatar
MissPenguin committed
151
152

<details open>
littletomatodonkey's avatar
littletomatodonkey committed
153
<summary>PP-OCRv3 Chinese model</summary>
dyning's avatar
dyning committed
154
<div align="center">
littletomatodonkey's avatar
littletomatodonkey committed
155
156
157
    <img src="doc/imgs_results/PP-OCRv3/ch/PP-OCRv3-pic001.jpg" width="800">
    <img src="doc/imgs_results/PP-OCRv3/ch/PP-OCRv3-pic002.jpg" width="800">
    <img src="doc/imgs_results/PP-OCRv3/ch/PP-OCRv3-pic003.jpg" width="800">
dyning's avatar
dyning committed
158
</div>
MissPenguin's avatar
MissPenguin committed
159
</details>
tink2123's avatar
tink2123 committed
160

MissPenguin's avatar
MissPenguin committed
161
<details open>
littletomatodonkey's avatar
littletomatodonkey committed
162
<summary>PP-OCRv3 English model</summary>
dyning's avatar
dyning committed
163
<div align="center">
littletomatodonkey's avatar
littletomatodonkey committed
164
165
    <img src="doc/imgs_results/PP-OCRv3/en/en_1.png" width="800">
    <img src="doc/imgs_results/PP-OCRv3/en/en_2.png" width="800">
dyning's avatar
dyning committed
166
</div>
MissPenguin's avatar
MissPenguin committed
167
</details>
168

MissPenguin's avatar
MissPenguin committed
169
<details open>
littletomatodonkey's avatar
littletomatodonkey committed
170
<summary>PP-OCRv3 Multilingual model</summary>
dyning's avatar
dyning committed
171
<div align="center">
littletomatodonkey's avatar
littletomatodonkey committed
172
173
    <img src="doc/imgs_results/PP-OCRv3/multi_lang/japan_2.jpg" width="800">
    <img src="doc/imgs_results/PP-OCRv3/multi_lang/korean_1.jpg" width="800">
dyning's avatar
dyning committed
174
</div>
MissPenguin's avatar
MissPenguin committed
175
</details>
dyning's avatar
dyning committed
176

MissPenguin's avatar
MissPenguin committed
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<details open>
<summary>PP-Structure</summary>

- layout analysis + table recognition  
<div align="center">
    <img src="./ppstructure/docs/table/ppstructure.GIF" width="800">
</div>

- SER (Semantic entity recognition)
<div align="center">
    <img src="./ppstructure/docs/vqa/result_ser/zh_val_0_ser.jpg" width="800">
</div>

- RE (Relation Extraction)
<div align="center">
    <img src="./ppstructure/docs/vqa/result_re/zh_val_21_re.jpg" width="800">
</div>

</details>

LDOUBLEV's avatar
LDOUBLEV committed
197
<a name="language_requests"></a>
198
## Guideline for New Language Requests
LDOUBLEV's avatar
LDOUBLEV committed
199

andyjpaddle's avatar
andyjpaddle committed
200
If you want to request a new language support, a PR with 1 following files are needed:
LDOUBLEV's avatar
LDOUBLEV committed
201

grasswolfs's avatar
grasswolfs committed
202
1. In folder [ppocr/utils/dict](./ppocr/utils/dict),
LDOUBLEV's avatar
LDOUBLEV committed
203
204
205
206
207
208
it is necessary to submit the dict text to this path and name it with `{language}_dict.txt` that contains a list of all characters. Please see the format example from other files in that folder.

If your language has unique elements, please tell me in advance within any way, such as useful links, wikipedia and so on.

More details, please refer to [Multilingual OCR Development Plan](https://github.com/PaddlePaddle/PaddleOCR/issues/1048).

MissPenguin's avatar
MissPenguin committed
209

WenmuZhou's avatar
WenmuZhou committed
210
211
<a name="LICENSE"></a>
## License
212
This project is released under <a href="https://github.com/PaddlePaddle/PaddleOCR/blob/master/LICENSE">Apache 2.0 license</a>