Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Return separate Excel sheets for tables while using paddleocr structure #14419

Closed
wants to merge 84 commits into from
Closed
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
ee9dc3c
Update PP-OCRv4_introduction.md
tink2123 Aug 11, 2023
88e2b13
Update PP-OCRv4_introduction.md (#10616)
Topdu Aug 14, 2023
6859e14
Update README.md
dyning Aug 16, 2023
b17c2f3
Cherrypicking GH-10217 and GH-10216 to PaddlePaddle:Release/2.7 (#10655)
UserUnknownFactor Aug 16, 2023
1614e84
Update requirements.txt (#10656)
itasli Aug 17, 2023
c0d51f1
[TIPC]update xpu tipc script (#10658)
USTCKAY Aug 17, 2023
f9dbab8
fix-typo (#10642)
dvorst Aug 17, 2023
b318d20
修改数据增强导致的DSR报错 (#10662) (#10681)
xu-peng-7 Aug 20, 2023
958abfb
Update algorithm_overview_en.md (#10670)
ncoffman Aug 21, 2023
be66967
Update how_to_do_kie_en.md (#10690)
sagarjgb Aug 23, 2023
b162237
Update quickstart_en.md (#10702)
sagarjgb Aug 23, 2023
9ef797a
Fix fitz camelCase deprecation and .PDF not being recognized as pdf f…
itasli Aug 23, 2023
daa7bed
Update algorithm_overview_en.md (#10704)
sagarjgb Aug 23, 2023
71b7c45
fix undefined save_model_dir when using wandb (#10251) (#10709)
itasli Aug 23, 2023
fa696f8
Update README.md (#10705)
sagarjgb Aug 23, 2023
8bd350a
Update README.md (#10706)
sagarjgb Aug 23, 2023
c13a50c
Update custom.md
shiyutang Aug 24, 2023
15963b0
fix: release memory after predict (#10688)
chungchamchi19 Aug 30, 2023
80bb51c
Update setup.py (#10749)
xiezheng-XD Sep 1, 2023
a3e28e3
Update v4 det model path in README.md (#10653)
tengxniu Sep 1, 2023
0d3020b
Update algorithm_kie_vi_layoutxlm_en.md (#10715)
sagarjgb Sep 5, 2023
a3ad926
Update algorithm_kie_vi_layoutxlm_en.md (#10716)
sagarjgb Sep 5, 2023
42e3d9a
Update how_to_do_kie_en.md (#10717)
sagarjgb Sep 5, 2023
1ab1e33
Update kie_datasets_en.md (#10724)
sagarjgb Sep 5, 2023
23fbdab
update paddlex intro (#10827)
tink2123 Sep 7, 2023
79fc4c5
update whl (#10916)
andyjiang1116 Sep 15, 2023
19ad3d9
🐞 fix(cpp_infer): 修复rebuild_table的bug (#10810)
JIANG3330 Sep 21, 2023
5ce67ec
add finnish language files (#10850)
savikko Sep 22, 2023
dc3fb00
fix `cls_x` and `bbox_x` is possibly unbound (#10973)
SigureMo Sep 25, 2023
bcbab79
update url for aistudio
tink2123 Sep 25, 2023
89a2f45
Update README_en.md
tink2123 Sep 25, 2023
e38a333
Update README.md
tink2123 Sep 28, 2023
f6b8f48
Update README_en.md
tink2123 Sep 28, 2023
f498aae
Update README.md
tink2123 Sep 28, 2023
d1a7676
Update README_en.md
tink2123 Sep 28, 2023
24503f7
update ppocrv4_framework (#11047)
tink2123 Oct 8, 2023
9ed3e5a
Update ONNX conversion readme_ch.md (#11030)
greyovo Oct 12, 2023
673c952
Create pull_request_template.md
shiyutang Oct 12, 2023
344b759
[TIPC]update tipc scripts and rm fluid api (#11098)
USTCKAY Oct 19, 2023
7fb904c
Update README.md
tink2123 Nov 3, 2023
909467d
Update README.md
tink2123 Nov 3, 2023
682a481
Update README.md
tink2123 Nov 16, 2023
cc302ea
Update README.md
tink2123 Nov 16, 2023
adeab26
Update README.md
tink2123 Nov 16, 2023
2c18739
Update README.md
dyning Nov 17, 2023
4b17511
Update README.md
dyning Nov 17, 2023
1582387
Update README.md
tink2123 Nov 22, 2023
5219872
Update README.md
tink2123 Dec 1, 2023
ad0d5e2
Update README.md
tink2123 Dec 6, 2023
1b1dc7e
Update README.md
tink2123 Dec 11, 2023
c75b90c
fix bug for rec_postprocess.py (#11408)
Ataraxy33 Dec 27, 2023
a5cb64b
Modify readme 27 (#11424)
zhangyubo0722 Dec 28, 2023
c27402b
fix:layout recovery image:xxx.png,err msg: list index out of range (#…
santlchogva Jan 2, 2024
ea701c0
Update README.md
tink2123 Jan 17, 2024
1ae07bd
Update predict_system.py
SHUBH4M-KUMAR Jan 17, 2024
c510e07
Merge pull request #1 from SHUBH4M-KUMAR/SHUBH4M-KUMAR-Update_save_st…
SHUBH4M-KUMAR Jan 17, 2024
777a143
Update utility.py
SHUBH4M-KUMAR Jan 17, 2024
6b67227
Update paddleocr.py
SHUBH4M-KUMAR Jan 17, 2024
d4ce999
Update requirements.txt
SHUBH4M-KUMAR Jan 17, 2024
1bc5500
rm QR code in the document (#11511)
tink2123 Jan 18, 2024
0525f6b
rm QR code (#11533)
tink2123 Jan 24, 2024
ff6d91e
Update predict_system.py
SHUBH4M-KUMAR Jan 31, 2024
809dc0f
Update predict_system.py
SHUBH4M-KUMAR Jan 31, 2024
9b0a7d8
Update predict_system.py
SHUBH4M-KUMAR Jan 31, 2024
52cf1e1
Update custom.md (#11636)
jzhang533 Feb 28, 2024
14fff65
fix AttributeError (#11556)
GreatV Mar 6, 2024
8fe58f0
update pre-commit config (#11682)
jzhang533 Mar 6, 2024
69832ab
lazy import PyMuPDF (#11685)
jzhang533 Mar 7, 2024
c306d28
setup a workflow for publishing package to pypi, and bump version to …
jzhang533 Mar 25, 2024
8a99bc9
minor change to .github/workflows/python-publish.yml
jzhang533 Mar 25, 2024
d28d9e7
get version by matchiing, so will not need to setup complex env in gi…
jzhang533 Mar 25, 2024
89e0a15
add wheel into .github/workflows/python-publish.yml
jzhang533 Mar 25, 2024
ddaa85d
Prepare 2.7.3 release (#11826)
jzhang533 Mar 28, 2024
0b91f4d
This is a combination of 59 commits from v2.7.0 to v2.7.1 in (#11831)
jzhang533 Mar 29, 2024
4865410
Update utility.py (#11836)
NikSain02 Mar 29, 2024
261d6c2
bump version to 2.7.5 (#11843)
Harryoung Mar 29, 2024
724f5e0
TextSystem is imported correctly in paddleocr.py (#11847)
AliBasarann Apr 1, 2024
bc06f6f
update rec_vit_parseq.yml, test=document_fix (#11856)
JiaXiao243 Apr 1, 2024
6ed5562
Fix the error of token_list formatting only taking the first digit wh…
UserWangZz Apr 1, 2024
8cce9b6
fix_config_file_about_dbnet_poly_detection (#12463)
UserWangZz May 27, 2024
86d2c55
Merge branch 'release/2.7' into release/2.7
SHUBH4M-KUMAR Dec 18, 2024
05ef88a
Update setup.py
SHUBH4M-KUMAR Dec 18, 2024
1cfc426
Update setup.py
SHUBH4M-KUMAR Dec 18, 2024
750e4e9
Update predict_det.py
SHUBH4M-KUMAR Dec 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/custom.md
Original file line number Diff line number Diff line change
@@ -13,3 +13,5 @@ assignees: ''
- 版本号/Version:Paddle: PaddleOCR: 问题相关组件/Related components:
- 运行指令/Command Code:
- 完整报错/Complete Error Message:

请尽量不要包含图片在问题中/Please try to not include the image in the issue.
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/newfeature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: New Feature Issue template
about: Issue template for new features.
title: ''
labels: 'Code PR is needed'
assignees: 'shiyutang'

---

## 背景

经过需求征集https://github.com/PaddlePaddle/PaddleOCR/issues/10334 和每周技术研讨会 https://github.com/PaddlePaddle/PaddleOCR/issues/10223 讨论,我们确定了XXXX任务。

## 解决步骤
1. 根据开源代码进行网络结构、评估指标转换。代码链接:XXXX
2. 结合[论文复现指南](https://github.com/PaddlePaddle/models/blob/release%2F2.2/tutorials/article-implementation/ArticleReproduction_CV.md),进行前反向对齐等操作,达到论文Table.1中的指标。
3. 参考[PR提交规范](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/code_and_doc.md)提交代码PR到ppocr中。
15 changes: 15 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
### PR 类型 PR types
<!-- One of [ New features | Bug fixes | Function optimization | Performance optimization | Breaking changes | Others ] -->

### PR 变化内容类型 PR changes
<!-- One of [ Models | APIs | Docs | Others ] -->

### 描述 Description
<!-- Describe what this PR does -->

### 提PR之前的检查 Check-list

- [ ] 这个 PR 是提交到dygraph分支或者是一个cherry-pick,否则请先提交到dygarph分支。
This PR is pushed to the dygraph branch or cherry-picked from the dygraph branch. Otherwise, please push your changes to the dygraph branch.
- [ ] 这个PR清楚描述了功能,帮助评审能提升效率。This PR have fully described what it does such that reviewers can speedup.
- [ ] 这个PR已经经过本地测试。This PR can be covered by existing tests or locally verified.
41 changes: 41 additions & 0 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# This workflow will upload a Python Package using Twine when a release is created
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Upload Python Package

on:
release:
types: [published]

permissions:
contents: read

jobs:
deploy:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
pip install setuptools
pip install wheel
- name: Build package
run: python setup.py bdist_wheel
- name: Publish package
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
21 changes: 14 additions & 7 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
- repo: https://github.com/PaddlePaddle/mirrors-yapf.git
sha: 0d79c0c469bab64f7229c9aca2b1186ef47f0e37
hooks:
- id: yapf
files: \.py$
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
sha: a11d9314b22d8f8c7556443875b731ef05965464
rev: a11d9314b22d8f8c7556443875b731ef05965464
hooks:
- id: check-merge-conflict
- id: check-symlinks
@@ -15,7 +11,7 @@
- id: trailing-whitespace
files: \.md$
- repo: https://github.com/Lucas-C/pre-commit-hooks
sha: v1.0.1
rev: v1.0.1
hooks:
- id: forbid-crlf
files: \.md$
@@ -33,3 +29,14 @@
entry: bash .clang_format.hook -i
language: system
files: \.(c|cc|cxx|cpp|cu|h|hpp|hxx|cuh|proto)$
# For Python files
- repo: https://github.com/psf/black.git
rev: 23.3.0
hooks:
- id: black
files: (.*\.(py|pyi|bzl)|BUILD|.*\.BUILD|WORKSPACE)$
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.2.0
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix, --no-cache]
81 changes: 38 additions & 43 deletions PPOCRLabel/gen_ocr_train_val_test.py
Original file line number Diff line number Diff line change
@@ -17,48 +17,43 @@ def isCreateOrDeleteFolder(path, flag):
return flagAbsPath


def splitTrainVal(root, absTrainRootPath, absValRootPath, absTestRootPath, trainTxt, valTxt, testTxt, flag):
# 按照指定的比例划分训练集、验证集、测试集
dataAbsPath = os.path.abspath(root)

if flag == "det":
labelFilePath = os.path.join(dataAbsPath, args.detLabelFileName)
elif flag == "rec":
labelFilePath = os.path.join(dataAbsPath, args.recLabelFileName)

labelFileRead = open(labelFilePath, "r", encoding="UTF-8")
labelFileContent = labelFileRead.readlines()
random.shuffle(labelFileContent)
labelRecordLen = len(labelFileContent)

for index, labelRecordInfo in enumerate(labelFileContent):
imageRelativePath = labelRecordInfo.split('\t')[0]
imageLabel = labelRecordInfo.split('\t')[1]
imageName = os.path.basename(imageRelativePath)

if flag == "det":
imagePath = os.path.join(dataAbsPath, imageName)
elif flag == "rec":
imagePath = os.path.join(dataAbsPath, "{}\\{}".format(args.recImageDirName, imageName))

# 按预设的比例划分训练集、验证集、测试集
trainValTestRatio = args.trainValTestRatio.split(":")
trainRatio = eval(trainValTestRatio[0]) / 10
valRatio = trainRatio + eval(trainValTestRatio[1]) / 10
curRatio = index / labelRecordLen

if curRatio < trainRatio:
imageCopyPath = os.path.join(absTrainRootPath, imageName)
shutil.copy(imagePath, imageCopyPath)
trainTxt.write("{}\t{}".format(imageCopyPath, imageLabel))
elif curRatio >= trainRatio and curRatio < valRatio:
imageCopyPath = os.path.join(absValRootPath, imageName)
shutil.copy(imagePath, imageCopyPath)
valTxt.write("{}\t{}".format(imageCopyPath, imageLabel))
else:
imageCopyPath = os.path.join(absTestRootPath, imageName)
shutil.copy(imagePath, imageCopyPath)
testTxt.write("{}\t{}".format(imageCopyPath, imageLabel))
def splitTrainVal(root, abs_train_root_path, abs_val_root_path, abs_test_root_path, train_txt, val_txt, test_txt, flag):

data_abs_path = os.path.abspath(root)
label_file_name = args.detLabelFileName if flag == "det" else args.recLabelFileName
label_file_path = os.path.join(data_abs_path, label_file_name)

with open(label_file_path, "r", encoding="UTF-8") as label_file:
label_file_content = label_file.readlines()
random.shuffle(label_file_content)
label_record_len = len(label_file_content)

for index, label_record_info in enumerate(label_file_content):
image_relative_path, image_label = label_record_info.split('\t')
image_name = os.path.basename(image_relative_path)

if flag == "det":
image_path = os.path.join(data_abs_path, image_name)
elif flag == "rec":
image_path = os.path.join(data_abs_path, args.recImageDirName, image_name)

train_val_test_ratio = args.trainValTestRatio.split(":")
train_ratio = eval(train_val_test_ratio[0]) / 10
val_ratio = train_ratio + eval(train_val_test_ratio[1]) / 10
cur_ratio = index / label_record_len

if cur_ratio < train_ratio:
image_copy_path = os.path.join(abs_train_root_path, image_name)
shutil.copy(image_path, image_copy_path)
train_txt.write("{}\t{}\n".format(image_copy_path, image_label))
elif cur_ratio >= train_ratio and cur_ratio < val_ratio:
image_copy_path = os.path.join(abs_val_root_path, image_name)
shutil.copy(image_path, image_copy_path)
val_txt.write("{}\t{}\n".format(image_copy_path, image_label))
else:
image_copy_path = os.path.join(abs_test_root_path, image_name)
shutil.copy(image_path, image_copy_path)
test_txt.write("{}\t{}\n".format(image_copy_path, image_label))


# 删掉存在的文件
@@ -148,4 +143,4 @@ def genDetRecTrainVal(args):
help="the name of the folder where the cropped recognition dataset is located"
)
args = parser.parse_args()
genDetRecTrainVal(args)
genDetRecTrainVal(args)
4 changes: 2 additions & 2 deletions PPOCRLabel/libs/utils.py
Original file line number Diff line number Diff line change
@@ -209,10 +209,10 @@ def convert_token(html_list):
token_list.append("<td")
if 'colspan' in col:
_, n = col.split('colspan=')
token_list.append(" colspan=\"{}\"".format(n[0]))
token_list.append(" colspan=\"{}\"".format(str(int(n))))
if 'rowspan' in col:
_, n = col.split('rowspan=')
token_list.append(" rowspan=\"{}\"".format(n[0]))
token_list.append(" rowspan=\"{}\"".format(str(int(n))))
token_list.extend([">", "</td>"])
token_list.append("</tr>")
token_list.append("</tbody>")
27 changes: 12 additions & 15 deletions README.md
100755 → 100644
Original file line number Diff line number Diff line change
@@ -26,6 +26,8 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
</div>

## 📣 近期更新
- **🔥[PaddleOCR 算法模型挑战赛](https://competition.atomgit.com/competitionInfo?id=d25e62a0d7f27876a8c4219bfc0be90e)** 火热开启!报名时间1/15-3/31,30万元奖金池!快来一展身手吧😎!
- **🔨2023.11 发布 [PP-ChatOCRv2](https://aistudio.baidu.com/application/detail/10368)**: 一个SDK,覆盖20+高频应用场景,支持5种文本图像智能分析能力和部署,包括通用场景关键信息抽取(快递单、营业执照和机动车行驶证等)、复杂文档场景关键信息抽取(解决生僻字、特殊标点、多页pdf、表格等难点问题)、通用OCR、文档场景专用OCR、通用表格识别。针对垂类业务场景,也支持模型训练、微调和Prompt优化。
- **🔥2023.8.7 发布 PaddleOCR [release/2.7](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7)**
- 发布[PP-OCRv4](./doc/doc_ch/PP-OCRv4_introduction.md),提供mobile和server两种模型
- PP-OCRv4-mobile:速度可比情况下,中文场景效果相比于PP-OCRv3再提升4.5%,英文场景提升10%,80语种多语言模型平均识别准确率提升8%以上
@@ -41,12 +43,12 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
- [表格识别](./ppstructure/table/README_ch.md)模型优化:设计3大优化策略,预测耗时不变情况下,模型精度提升6%;
- [关键信息抽取](./ppstructure/kie/README_ch.md)模型优化:设计视觉无关模型结构,语义实体识别精度提升2.8%,关系抽取精度提升9.1%。
- 🔥**2022.8 发布 [OCR场景应用集合](./applications)**:包含数码管、液晶屏、车牌、高精度SVTR模型、手写体识别等**9个垂类模型**,覆盖通用,制造、金融、交通行业的主要OCR垂类应用。

> [更多](./doc/doc_ch/update.md)

## 🌟 特性

支持多种OCR相关前沿算法,在此基础上打造产业级特色模型[PP-OCR](./doc/doc_ch/ppocr_introduction.md)、[PP-Structure](./ppstructure/README_ch.md)和[PP-ChatOCR](https://aistudio.baidu.com/aistudio/projectdetail/6488689),并打通数据生产、模型训练、压缩、预测部署全流程。
支持多种OCR相关前沿算法,在此基础上打造产业级特色模型[PP-OCR](./doc/doc_ch/ppocr_introduction.md)、[PP-Structure](./ppstructure/README_ch.md)和[PP-ChatOCRv2](https://aistudio.baidu.com/projectdetail/paddlex/7050167),并打通数据生产、模型训练、压缩、预测部署全流程。

<div align="center">
<img src="https://raw.githubusercontent.com/tink2123/test/master/ppocrv4.png">
@@ -57,28 +59,23 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力

## ⚡ 快速开始

- 在线网站体验:
- PP-OCRv4 在线体验地址:https://aistudio.baidu.com/aistudio/projectdetail/6611435
- PP-ChatOCR 在线体验地址:https://aistudio.baidu.com/aistudio/projectdetail/6488689
- 在线免费体验:
- PP-OCRv4 在线体验地址:https://aistudio.baidu.com/application/detail/7658
- PP-ChatOCRv2 在线体验地址:https://aistudio.baidu.com/application/detail/10368

- 一行命令快速使用:[快速开始(中英文/多语言/文档分析)](./doc/doc_ch/quickstart.md)
- 飞桨AI套件(PaddleX)中训练、推理、高性能部署全流程体验:
- PP-OCRv4:https://aistudio.baidu.com/aistudio/modelsdetail?modelId=286
- PP-ChatOCR:https://aistudio.baidu.com/aistudio/modelsdetail?modelId=332
- 移动端demo体验:[安装包DEMO下载地址](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite)(基于EasyEdge和Paddle-Lite, 支持iOS和Android系统)

<a name="技术交流合作"></a>
## 📖 技术交流合作
- 飞桨AI套件([PaddleX](http://10.136.157.23:8080/paddle/paddleX))提供了飞桨模型训压推一站式全流程高效率开发平台,其使命是助力AI技术快速落地,愿景是使人人成为AI Developer!
- PaddleX 目前覆盖图像分类、目标检测、图像分割、3D、OCR和时序预测等领域方向,已内置了36种基础单模型,例如RP-DETR、PP-YOLOE、PP-HGNet、PP-LCNet、PP-LiteSeg等;集成了12种实用的产业方案,例如PP-OCRv4、PP-ChatOCR、PP-ShiTu、PP-TS、车载路面垃圾检测、野生动物违禁制品识别等。
- PaddleX 目前覆盖图像分类、目标检测、图像分割、3D、OCR和时序预测等领域方向,已内置了36种基础单模型,例如RT-DETR、PP-YOLOE、PP-HGNet、PP-LCNet、PP-LiteSeg等;集成了12种实用的产业方案,例如PP-OCRv4、PP-ChatOCR、PP-ShiTu、PP-TS、车载路面垃圾检测、野生动物违禁制品识别等。
- PaddleX 提供了“工具箱”和“开发者”两种AI开发模式。工具箱模式可以无代码调优关键超参,开发者模式可以低代码进行单模型训压推和多模型串联推理,同时支持云端和本地端。
- PaddleX 还支持联创开发,利润分成!目前 PaddleX 正在快速迭代,欢迎广大的个人开发者和企业开发者参与进来,共创繁荣的 AI 技术生态!

微信扫描下面二维码添加运营同学,并回复【paddlex】,运营同学会邀请您加入官方交流群,获得更高效的问题答疑。
- PaddleX官网地址:https://aistudio.baidu.com/intro/paddlex

<div align="center">
<img src="https://raw.githubusercontent.com/PaddlePaddle/PaddleOCR/dygraph/doc/joinus_paddlex.jpg" width = "150" height = "150",caption='' />
<p>飞桨AI套件【PaddleX】技术交流群二维码</p>
</div>
- PaddleX官方交流频道:https://aistudio.baidu.com/community/channel/610

<a name="电子书"></a>
## 📚《动手学OCR》电子书
@@ -99,7 +96,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力

| 模型简介 | 模型名称 | 推荐场景 | 检测模型 | 方向分类器 | 识别模型 |
| ------------------------------------- | ----------------------- | --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 中英文超轻量PP-OCRv4模型(15.8M) | ch_PP-OCRv4_xx | 移动端&服务器端 | [推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_distill_train.tar) | [推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar) | [推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_train.tar) |
| 中英文超轻量PP-OCRv4模型(15.8M) | ch_PP-OCRv4_xx | 移动端&服务器端 | [推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_train.tar) | [推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar) | [推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_train.tar) |
| 中英文超轻量PP-OCRv3模型(16.2M) | ch_PP-OCRv3_xx | 移动端&服务器端 | [推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_distill_train.tar) | [推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar) | [推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_train.tar) |
| 英文超轻量PP-OCRv3模型(13.4M) | en_PP-OCRv3_xx | 移动端&服务器端 | [推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_det_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_det_distill_train.tar) | [推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar) | [推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_train.tar) |

Loading