README.md 12.6 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

grasswolfs's avatar
grasswolfs committed
20

WenmuZhou's avatar
WenmuZhou committed
21
**Recent updates**
MissPenguin's avatar
MissPenguin committed
22
- 2021.12.21 OCR open source online course starts. The lesson starts at 8:30 every night and lasts for ten days. Free registration: https://aistudio.baidu.com/aistudio/course/introduce/25207
Leif's avatar
Leif committed
23
- 2021.12.21 release PaddleOCR v2.4, release 1 text detection algorithm (PSENet), 3 text recognition algorithms (NRTR、SEED、SAR), 1 key information extraction algorithm (SDMGR, [tutorial](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.4/ppstructure/docs/kie.md)) and 3 DocVQA algorithms (LayoutLM, LayoutLMv2, LayoutXLM, [tutorial](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.4/ppstructure/vqa)).
24
- PaddleOCR R&D team would like to share the key points of PP-OCRv2, at 20:15 pm on September 8th, [Course Address](https://aistudio.baidu.com/aistudio/education/group/info/6758).
DanielYang's avatar
DanielYang committed
25
- 2021.9.7 release PaddleOCR v2.3, [PP-OCRv2](#PP-OCRv2) is proposed. 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.
Leif's avatar
Leif committed
26
27
28
- 2021.8.3 released PaddleOCR v2.2, add a new structured documents analysis toolkit, i.e., [PP-Structure](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.2/ppstructure/README.md), support layout analysis and table recognition (One-key to export chart images to Excel files).
- 2021.4.8 release end-to-end text recognition algorithm [PGNet](https://www.aaai.org/AAAI21Papers/AAAI-2885.WangP.pdf) which is published in AAAI 2021. Find tutorial [here](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_en/pgnet_en.md);release multi language recognition [models](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_en/multi_languages_en.md), support more than 80 languages recognition; especically, the performance of [English recognition model](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_en/models_list_en.md#English) is Optimized.

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

31

MissPenguin's avatar
update  
MissPenguin committed
32
## Features
WenmuZhou's avatar
WenmuZhou committed
33

MissPenguin's avatar
update  
MissPenguin committed
34
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
35

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

MissPenguin's avatar
update  
MissPenguin committed
38
> It is recommended to start with the “quick experience” in the document tutorial
LDOUBLEV's avatar
LDOUBLEV committed
39
40


WenmuZhou's avatar
WenmuZhou committed
41
## Quick Experience
dyning's avatar
dyning committed
42

MissPenguin's avatar
update  
MissPenguin committed
43
44
45
46
47
48
49
50
51
52
53
54
- 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
55

MissPenguin's avatar
update  
MissPenguin committed
56
57
58
- **Join us**👬: Scan the QR code below with your Wechat, you can join the official technical discussion group. Looking forward to your participation.
- **Contribution**🏅️: [Contribution page](./doc/doc_en/thirdparty.md) contains various tools and applications developed by community developers using PaddleOCR, as well as the functions, optimized documents and codes contributed to PaddleOCR. It is an official honor wall for community developers and a broadcasting station to help publicize high-quality projects.
- **Regular Season**🎁: The community regular season is a point competition for OCR developers, covering four types: documents, codes, models and applications. Awards are selected and awarded on a quarterly basis. Please refer to the [link](https://github.com/PaddlePaddle/PaddleOCR/issues/4982) for more details.
tink2123's avatar
tink2123 committed
59

LDOUBLEV's avatar
LDOUBLEV committed
60

grasswolfs's avatar
grasswolfs committed
61
<div align="center">
MissPenguin's avatar
update  
MissPenguin committed
62
<img src="https://raw.githubusercontent.com/PaddlePaddle/PaddleOCR/dygraph/doc/joinus.PNG"  width = "200" height = "200" />
grasswolfs's avatar
grasswolfs committed
63
</div>
dyning's avatar
dyning committed
64

WenmuZhou's avatar
WenmuZhou committed
65
66

<a name="Supported-Chinese-model-list"></a>
67
## PP-OCR Series Model List(Update on September 8th)
WenmuZhou's avatar
WenmuZhou committed
68
69
70

| Model introduction                                           | Model name                   | Recommended scene | Detection model                                              | Direction classifier                                         | Recognition model                                            |
| ------------------------------------------------------------ | ---------------------------- | ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
LDOUBLEV's avatar
reset  
LDOUBLEV committed
71
| 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
72
| 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)      |
73
| 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
74

WenmuZhou's avatar
WenmuZhou committed
75

MissPenguin's avatar
update  
MissPenguin committed
76
77
78
- 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
79
80

## Tutorials
Leif's avatar
Leif committed
81
- [Environment Preparation](./doc/doc_en/environment_en.md)
WenmuZhou's avatar
WenmuZhou committed
82
- [Quick Start](./doc/doc_en/quickstart_en.md)
MissPenguin's avatar
update  
MissPenguin committed
83
84
85
86
- [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
87
88
        - [Text Detection](./doc/doc_en/detection_en.md)
        - [Text Recognition](./doc/doc_en/recognition_en.md)
89
        - [Text Direction Classification](./doc/doc_en/angle_class_en.md)
MissPenguin's avatar
update  
MissPenguin committed
90
    - Model Compression
Leif's avatar
Leif committed
91
92
        - [Model Quantization](./deploy/slim/quantization/README_en.md)
        - [Model Pruning](./deploy/slim/prune/README_en.md)
MissPenguin's avatar
update  
MissPenguin committed
93
        - [Knowledge Distillation](./doc/doc_en/knowledge_distillation_en.md)
MissPenguin's avatar
update  
MissPenguin committed
94
    - [Inference and Deployment](./deploy/README.md)
MissPenguin's avatar
update  
MissPenguin committed
95
96
        - [Python Inference](./doc/doc_en/inference_ppocr_en.md)
        - [C++ Inference](./deploy/cpp_infer/readme.md)
Leif's avatar
Leif committed
97
        - [Serving](./deploy/pdserving/README.md)
MissPenguin's avatar
update  
MissPenguin committed
98
99
        - [Mobile](./deploy/lite/readme.md)
        - [Paddle2ONNX](./deploy/paddle2onnx/readme.md)
Leif's avatar
Leif committed
100
        - [Benchmark](./doc/doc_en/benchmark_en.md)  
MissPenguin's avatar
update  
MissPenguin committed
101
102
103
- [PP-Structure 🔥](./ppstructure/README.md)
    - [Quick Start](./ppstructure/docs/quickstart_en.md)
    - [Model Zoo](./ppstructure/docs/models_list_en.md)
104
    - [Model training](./doc/doc_en/training_en.md)  
MissPenguin's avatar
update  
MissPenguin committed
105
106
107
108
109
110
111
112
113
114
115
116
117
        - [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
118
- Data Annotation and Synthesis
grasswolfs's avatar
grasswolfs committed
119
    - [Semi-automatic Annotation Tool: PPOCRLabel](./PPOCRLabel/README.md)
dyning's avatar
dyning committed
120
    - [Data Synthesis Tool: Style-Text](./StyleText/README.md)
grasswolfs's avatar
grasswolfs committed
121
122
    - [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
123
- Datasets
124
125
126
    - [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
update  
MissPenguin committed
127
- [Code Structure](./doc/doc_en/tree_en.md)
WenmuZhou's avatar
WenmuZhou committed
128
- [Visualization](#Visualization)
MissPenguin's avatar
update  
MissPenguin committed
129
- [Community](#Community)
LDOUBLEV's avatar
LDOUBLEV committed
130
- [New language requests](#language_requests)
WenmuZhou's avatar
WenmuZhou committed
131
132
133
- [FAQ](./doc/doc_en/FAQ_en.md)
- [References](./doc/doc_en/reference_en.md)
- [License](#LICENSE)
dyning's avatar
dyning committed
134

tink2123's avatar
tink2123 committed
135

MissPenguin's avatar
update  
MissPenguin committed
136
<a name="Visualization"></a>
WenmuZhou's avatar
WenmuZhou committed
137
138
## Visualization [more](./doc/doc_en/visualization_en.md)
- Chinese OCR model
dyning's avatar
dyning committed
139
<div align="center">
LDOUBLEV's avatar
LDOUBLEV committed
140
    <img src="./doc/imgs_results/ch_ppocr_mobile_v2.0/test_add_91.jpg" width="800">
LDOUBLEV's avatar
LDOUBLEV committed
141
142
    <img src="./doc/imgs_results/ch_ppocr_mobile_v2.0/00015504.jpg" width="800">
    <img src="./doc/imgs_results/ch_ppocr_mobile_v2.0/00056221.jpg" width="800">
LDOUBLEV's avatar
LDOUBLEV committed
143
    <img src="./doc/imgs_results/ch_ppocr_mobile_v2.0/rotate_00052204.jpg" width="800">
dyning's avatar
dyning committed
144
</div>
tink2123's avatar
tink2123 committed
145

WenmuZhou's avatar
WenmuZhou committed
146
- English OCR model
dyning's avatar
dyning committed
147
<div align="center">
LDOUBLEV's avatar
LDOUBLEV committed
148
    <img src="./doc/imgs_results/ch_ppocr_mobile_v2.0/img_12.jpg" width="800">
dyning's avatar
dyning committed
149
</div>
150

WenmuZhou's avatar
WenmuZhou committed
151
- Multilingual OCR model
dyning's avatar
dyning committed
152
<div align="center">
LDOUBLEV's avatar
LDOUBLEV committed
153
    <img src="./doc/imgs_results/french_0.jpg" width="800">
LDOUBLEV's avatar
LDOUBLEV committed
154
    <img src="./doc/imgs_results/korean.jpg" width="800">
dyning's avatar
dyning committed
155
</div>
tink2123's avatar
tink2123 committed
156

dyning's avatar
dyning committed
157

LDOUBLEV's avatar
LDOUBLEV committed
158
<a name="language_requests"></a>
159
## Guideline for New Language Requests
LDOUBLEV's avatar
LDOUBLEV committed
160

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

grasswolfs's avatar
grasswolfs committed
163
1. In folder [ppocr/utils/dict](./ppocr/utils/dict),
LDOUBLEV's avatar
LDOUBLEV committed
164
165
166
167
168
169
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
170

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