diff --git a/README.md b/README.md index 27d01cbef..f282076ec 100755 --- a/README.md +++ b/README.md @@ -28,11 +28,8 @@ Contents - [Introduction](#introduction) +- [Recent News](#recent-news) - [Navigation](#navigation) -- [Recently updates(more)](#recently-updatesmore) - - [🍜2023-05-22 api update:](#2023-05-22-api-update) - - [❤2023-05-20 ocrweb update:](#2023-05-20-ocrweb-update) - - [🌹 2023-05-14 ocrweb v0.1.5 update:](#-2023-05-14-ocrweb-v015-update) - [Overall Framework](#overall-framework) - [Demo](#demo) - [TODO and Task Claim](#todo-and-task-claim) @@ -58,6 +55,11 @@ - Not meeting requirements → Based on [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR). Fine-tune your own data → RapidOCR deployment. -If this repo is helpful to you, please click on a small star ⭐ Bah! +## Recent News +- 2023-08-27: + - \[Python\] Integrate PaddleOCR v4 model and do [review](https://github.com/RapidAI/RapidOCR/wiki/%E4%B8%8D%E5%90%8C%E7%89%88%E6%9C%AC%E6%A8%A1%E5%9E%8B%E4%B9%8B%E9%97%B4%E6%AF%94%E8%BE%83) of v4 model. The v4-based `rapidocr` package has been updated to `v1.3.0`, for documentation see: [link](https://github.com/RapidAI/RapidOCR/tree/main/python) + - Sorting out differences in the `rapidocr` version series and optimizing some of the python documentation. + ## Navigation - [Wiki](https://github.com/RapidAI/RapidOCR/wiki) - [Support Language](https://github.com/RapidAI/RapidOCR/wiki/support_language) @@ -99,17 +101,6 @@ - [Model Download](https://github.com/RapidAI/RapidOCR/blob/main/docs/models.md#模型下载) - [FAQ](https://github.com/RapidAI/RapidOCR/blob/main/docs/FAQ.md) -## Recently updates([more](https://github.com/RapidAI/RapidOCR/wiki/Changelog)) -#### 🍜2023-05-22 api update: -- Decouple the API from ocrweb and maintain it as a separate module. For details, see [API](https://github.com/RapidAI/RapidOCR/tree/main/api) -- After `rapidocr_web>0.1.6`, `pip install rapidocr_web[api]` will not be supported for installation, you can directly install and use `pip install rapidocr_api`. -#### ❤2023-05-20 ocrweb update: -- Add desktop version of RapidOCRWeb, for details, please refer to [RapidOCRWeb desktop version tutorial](https://github.com/RapidAI/RapidOCR/wiki/%5BRapidOCRWeb%5D-%E6%A1%8C%E9%9D%A2%E7%89%88%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B) -#### 🌹 2023-05-14 ocrweb v0.1.5 update: -- Add the return value of the interface version's return coordinate box ([issue #85](https://github.com/RapidAI/RapidOCR/issues/85)) -- API mode adds base64 format input -- For details, please refer to: [link](https://github.com/RapidAI/RapidOCR/blob/main/ocrweb/README.md) - ## Overall Framework ```mermaid flowchart LR diff --git a/docs/README_zh.md b/docs/README_zh.md index fb4a64615..5eb4e4418 100644 --- a/docs/README_zh.md +++ b/docs/README_zh.md @@ -32,6 +32,7 @@ - [捷智OCR](#捷智ocr) - [商业支持](#商业支持) - [简介](#简介) + - [最近动态](#最近动态) - [文档导航](#文档导航) - [生态框架](#生态框架) - [在线demo](#在线demo) @@ -64,9 +65,15 @@ - 不满足要求 → 基于[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)在自己数据上微调 → RapidOCR部署。 - 如果该仓库有帮助到你,还请点个小星星⭐呗! +## 最近动态 +- 2023-08-27: + - \[Python\] 整合PaddleOCR v4版本模型,并对v4模型做[评测](https://github.com/RapidAI/RapidOCR/wiki/%E4%B8%8D%E5%90%8C%E7%89%88%E6%9C%AC%E6%A8%A1%E5%9E%8B%E4%B9%8B%E9%97%B4%E6%AF%94%E8%BE%83)。基于v4的`rapidocr`包已经更新到`v1.3.0`中,使用文档参见:[link](https://github.com/RapidAI/RapidOCR/tree/main/python) + - 梳理`rapidocr`版本系列差异,优化python部分文档。 + ## 文档导航 - [Wiki](https://github.com/RapidAI/RapidOCR/wiki) - - [自定义识别模型](https://github.com/RapidAI/RapidOCR/wiki/support_language) + - [自定义识别模型及模型转换为ONNX](https://github.com/RapidAI/RapidOCR/wiki/support_language) + - [不同版本模型之间效果比较](https://github.com/RapidAI/RapidOCR/wiki/%E4%B8%8D%E5%90%8C%E7%89%88%E6%9C%AC%E6%A8%A1%E5%9E%8B%E4%B9%8B%E9%97%B4%E6%AF%94%E8%BE%83) - [ONNXRuntime推理调优指南](https://github.com/RapidAI/RapidOCR/wiki/ONNXRuntime%E6%8E%A8%E7%90%86%E8%B0%83%E4%BC%98%E6%8C%87%E5%8D%97) - [RapidOCR调优尝试教程](https://github.com/RapidAI/RapidOCR/wiki/RapidOCR%E8%B0%83%E4%BC%98%E5%B0%9D%E8%AF%95%E6%95%99%E7%A8%8B) - [OpenVINO推理](https://github.com/RapidAI/RapidOCR/wiki/openvino%E6%8E%A8%E7%90%86) @@ -89,17 +96,17 @@ - [含文本的图像方向分类](https://github.com/RapidAI/RapidStructure/blob/main/docs/README_Orientation.md) - [版面分析](https://github.com/RapidAI/RapidStructure/blob/main/docs/README_Layout.md) - [表格还原](https://github.com/RapidAI/RapidStructure/blob/main/docs/README_Table.md) +- [常见问题 FAQ](https://github.com/RapidAI/RapidOCR/wiki/FAQ) - 衍生项目 - - [RapidOCR HTTP服务/win32程序/易语言编写](https://github.com/Physton/RapidOCRServer) + - [RapidOCRServer](https://github.com/Physton/RapidOCRServer):RapidOCR HTTP服务/win32程序/易语言编写 + - [PaddleModelConverter](https://github.com/RapidAI/PaddleOCRModelConverter): 模型自助转换 + - [TextDetMetric](https://github.com/SWHL/TextDetMetric):文本检测模型评估 - [垂直项目](https://github.com/RapidAI/RapidOCR/blob/main/docs/related_projects.md) - [RapidOCRPDF](https://github.com/RapidAI/RapidOCRPDF):解析PDF文件 - [RapidVideOCR](https://github.com/SWHL/RapidVideOCR):基于RapidOCR,提取视频中的硬字幕 - [LGPMA_Infer](https://github.com/SWHL/LGPMA_Infer): 表格结构还原 | [博客解读论文和源码](http://t.csdn.cn/QNN3S) - [PaperEdge](https://github.com/cvlab-stonybrook/PaperEdge):文档图像矫正 | [Demo](https://huggingface.co/spaces/SWHL/PaperEdgeDemo) - [CTRNet](https://github.com/lcy0604/CTRNet):图像文字擦除 | [Demo](https://huggingface.co/spaces/SWHL/CTRNetDemo) -- [模型相关](https://github.com/RapidAI/RapidOCR/wiki/%E6%A8%A1%E5%9E%8B%E7%9B%B8%E5%85%B3) -- [常见问题 FAQ](https://github.com/RapidAI/RapidOCR/wiki/FAQ) - ## 生态框架 ```mermaid @@ -128,7 +135,7 @@ flowchart LR
-- [Hugging Face Demo](https://huggingface.co/spaces/SWHL/RapidOCRDemo) +- [Hugging Face Demo](https://huggingface.co/spaces/SWHL/RapidOCRDemo) | [魔搭demo](https://www.modelscope.cn/studios/liekkas/RapidOCRDemo/summary) - 该demo依托于Hugging Face的Spaces构建,采用Gradio库搭建。 - 示例图:
diff --git a/python/README.md b/python/README.md index 6148a10c5..0f0ce298b 100755 --- a/python/README.md +++ b/python/README.md @@ -10,168 +10,161 @@ 目录 - [RapidOCR Python](#rapidocr-python) - - [简介和说明](#简介和说明) - - [(推荐)pip安装快速使用](#推荐pip安装快速使用) + - [简介](#简介) + - [说明](#说明) + - [pip安装快速使用(推荐)](#pip安装快速使用推荐) - [源码使用步骤](#源码使用步骤) +### 简介 +- 该部分为python版的OCR推理,包括基于ONNXRuntime和OpenVINO两个推理引擎的包。 +- 因为模型较小,因此将相关模型都已打到Whl包,可直接pip安装使用。 -### 简介和说明 -- **各个版本的ONNX模型下载地址:**[百度网盘](https://pan.baidu.com/s/1PTcgXG2zEgQU6A_A3kGJ3Q?pwd=jhai) | [Google Drive](https://drive.google.com/drive/folders/1x_a9KpCo_1blxH1xFOfgKVkw1HYRVywY?usp=sharing) -- 所有常用的参数配置都在[`config.yaml`](https://github.com/RapidAI/RapidOCR/blob/main/python/rapidocr_onnxruntime/config.yaml)下,一目了然,更加便捷 -- **目前[`config.yaml`](https://github.com/RapidAI/RapidOCR/blob/main/python/rapidocr_onnxruntime/config.yaml)中配置为权衡速度和准确度的最优组合。** -- 每个独立的模块下均有独立的`config.yaml`配置文件,可以单独使用 -- `det`部分,`mobile` | `server` | `v2` | `v3`推理代码均为一个 - - 如果想要指定自己的模型,可以在初始化时,指定`det`模型路径,其他相关参数同理 - ```python - from rapidocr_onnxruntime import RapidOCR - rapid_ocr = RapidOCR(det_model_path='xxxxx.onnx') - ``` -- `rec`部分,`mobile` | `server` | `v2` | `v3`推理代码均为一个 - - `rec`中`v2`和`v3`两个版本,差别仅在输入shape和模型。经过测试,采用`v3 rec模型`+`[3, 48, 320]`效果最好 - - 目前配置文件`config.yaml`中(如下所示)已是最优组合 - ```yaml - module_name: ch_ppocr_v3_rec - class_name: TextRecognizer - model_path: resources/models/ch_PP-OCRv3_rec_infer.onnx - - rec_img_shape: [3, 48, 320] - rec_batch_num: 6 - ``` -- 关于选择哪个推理引擎(onnxruntime 或者 openvino)? +### 说明 +- `rapidocr_onnxruntime`和`rapidocr_openvino`两个包除推理引擎不同之外,其余均相同,默认都是在CPU上运行。 +- 按语义版本号来讲,两个包其主版本号和次版本号同步更新,修订号可能会有区别。也就是说`x.y.z`中`x`和`y`是一样的,`z`可能不同。 +- 各个版本的对应关系: + |版本|内置模型版本|对应PaddleOCR 分支| + |:---:|:---:|:---:| + |`v1.3.x`|PaddleOCR v4版| [release/2.7](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7)| + |`v1.2.x`
`v1.1.x`
`v1.0.x`|PaddleOCR v3版| [release/2.6](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6)| +- 推荐使用[PaddleOCRModelConveter](https://github.com/RapidAI/PaddleOCRModelConverter)在线转换,现用现转。推理代码都是同一个,只需更换模型即可。已转好**ONNX模型下载地址:**[百度网盘](https://pan.baidu.com/s/1PTcgXG2zEgQU6A_A3kGJ3Q?pwd=jhai) | [Google Drive](https://drive.google.com/drive/folders/1x_a9KpCo_1blxH1xFOfgKVkw1HYRVywY?usp=sharing),大家可自行搭配使用。 +- 所有常用的参数配置都在[`config.yaml`](https://github.com/RapidAI/RapidOCR/blob/main/python/rapidocr_onnxruntime/config.yaml)下,其中每个独立的模块下均有独立的`config.yaml`配置文件,可以单独使用。 +- 关于选择哪个版本的包(`rapidocr_onnxruntime` 或者 `rapidocr_openvino`)? |推理引擎|推理速度更快|占用内存更少| |:---:|:---:|:---:| - |onnxruntime||✓| - |openvino|✓|存在内存不释放的问题,参见[wiki](https://github.com/RapidAI/RapidOCR/wiki/openvino%E5%85%A5%E9%97%A8)| - - -### (推荐)pip安装快速使用 -1. 安装包(⚠️注意:两个包接口一致,只是推理引擎不同而已,默认都是在CPU上运行) - |包名|版本|安装命令| - |:---|:---:|:---| - |`rapidocr_onnxruntime`|PyPI|`pip install rapidocr-onnxruntime`| - |`rapidocr_openvino`|PyPI|`pip install rapidocr-openvino`| - -1. 推理使用 - - 脚本使用: - - ⚠️注意:初始化RapidOCR可不提供`config.yaml`,默认使用安装目录下的`config.yaml`。如有自定义需求: - - 一是可直接通过初始化参数传入。详细参数参考下面命令行部分,和`config.yaml`基本对应。 - - 二是复制`config.yaml`,自行更改,然后初始化给出。e.g. `engine = RapidOCR(config_path="custom.yaml")` - - 输入:`Union[str, np.ndarray, bytes, Path]` - - 输出: - - 有值:`([[文本框坐标], 文本内容, 置信度], 推理时间)`, - - 示例:`[[左上, 右上, 右下, 左下], '小明', '0.99'], [0.02, 0.02, 0.85]` - - 为空:`(None, None)` - - 示例: - ```python - import cv2 - from rapidocr_onnxruntime import RapidOCR - # from rapidocr_openvino import RapidOCR - - # RapidOCR可传入参数参考下面的命令行部分 - rapid_ocr = RapidOCR() - # rapid_ocr = RapidOCR(config_path='custom.yaml') - - img_path = 'tests/test_files/ch_en_num.jpg' - - # 输入格式一:str - result, elapse = rapid_ocr(img_path) - - # 输入格式二:np.ndarray - img = cv2.imread('tests/test_files/ch_en_num.jpg') - result, elapse = rapid_ocr(img) + |`rapidocr_onnxruntime`||✓| + |`rapidocr_openvino`|✓|⚠️ openvino存在内存不释放的问题,参见[wiki](https://github.com/RapidAI/RapidOCR/wiki/openvino%E5%85%A5%E9%97%A8)| + + +### pip安装快速使用(推荐) +1. 安装环境 + |包名|版本|安装命令| + |:---|:---:|:---| + |`rapidocr_onnxruntime`|PyPI|`pip install rapidocr-onnxruntime`| + |`rapidocr_openvino`|PyPI|`pip install rapidocr-openvino`| + +2. python脚本使用 + - ⚠️注意:初始化RapidOCR可不提供`config.yaml`,默认使用安装目录下的`config.yaml`。如有自定义需求: + - 一是可直接通过初始化参数传入。详细参数参考下面命令行部分,和`config.yaml`基本对应。 + - 二是复制`config.yaml`,自行更改,然后初始化给出。e.g. `engine = RapidOCR(config_path="custom.yaml")` + + - 输入:`Union[str, np.ndarray, bytes, Path]` + - 输出: + - 有值:`([[文本框坐标], 文本内容, 置信度], 推理时间)`,e.g. `[[左上, 右上, 右下, 左下], '小明', '0.99'], [0.02, 0.02, 0.85]` + - 为空:`(None, None)` + - 示例: + ```python + import cv2 + from rapidocr_onnxruntime import RapidOCR + # from rapidocr_openvino import RapidOCR + + # RapidOCR可传入参数参考下面的命令行部分 + rapid_ocr = RapidOCR() + + img_path = 'tests/test_files/ch_en_num.jpg' + + # 输入格式一:str + result, elapse = rapid_ocr(img_path) + + # 输入格式二:np.ndarray + img = cv2.imread('tests/test_files/ch_en_num.jpg') + result, elapse = rapid_ocr(img) + + # 输入格式三:bytes + with open(img_path, 'rb') as f: + img = f.read() + result, elapse = rapid_ocr(img) + + # 输入格式四:Path + result, elapse = rapid_ocr(Path(img_path)) + print(result) + ``` + +3. 命令行使用 + - 参数说明: + ```bash + $ rapidocr_onnxruntime -h + usage: rapidocr_onnxruntime [-h] -img IMG_PATH [-p] [--text_score TEXT_SCORE] + [--use_angle_cls USE_ANGLE_CLS] + [--use_text_det USE_TEXT_DET] + [--print_verbose PRINT_VERBOSE] + [--min_height MIN_HEIGHT] + [--width_height_ratio WIDTH_HEIGHT_RATIO] + [--det_use_cuda DET_USE_CUDA] + [--det_model_path DET_MODEL_PATH] + [--det_limit_side_len DET_LIMIT_SIDE_LEN] + [--det_limit_type {max,min}] + [--det_thresh DET_THRESH] + [--det_box_thresh DET_BOX_THRESH] + [--det_unclip_ratio DET_UNCLIP_RATIO] + [--det_use_dilation DET_USE_DILATION] + [--det_score_mode {slow,fast}] + [--cls_use_cuda CLS_USE_CUDA] + [--cls_model_path CLS_MODEL_PATH] + [--cls_image_shape CLS_IMAGE_SHAPE] + [--cls_label_list CLS_LABEL_LIST] + [--cls_batch_num CLS_BATCH_NUM] + [--cls_thresh CLS_THRESH] + [--rec_use_cuda REC_USE_CUDA] + [--rec_model_path REC_MODEL_PATH] + [--rec_img_shape REC_IMAGE_SHAPE] + [--rec_batch_num REC_BATCH_NUM] + + optional arguments: + -h, --help show this help message and exit + -img IMG_PATH, --img_path IMG_PATH MUST + -p, --print_cost + + Global: + --text_score TEXT_SCORE + --use_angle_cls USE_ANGLE_CLS + --use_text_det USE_TEXT_DET + --print_verbose PRINT_VERBOSE + --min_height MIN_HEIGHT + --width_height_ratio WIDTH_HEIGHT_RATIO + + Det: + --det_use_cuda DET_USE_CUDA + --det_model_path DET_MODEL_PATH + --det_limit_side_len DET_LIMIT_SIDE_LEN + --det_limit_type {max,min} + --det_thresh DET_THRESH + --det_box_thresh DET_BOX_THRESH + --det_unclip_ratio DET_UNCLIP_RATIO + --det_use_dilation DET_USE_DILATION + --det_score_mode {slow,fast} + + Cls: + --cls_use_cuda CLS_USE_CUDA + --cls_model_path CLS_MODEL_PATH + --cls_image_shape CLS_IMAGE_SHAPE + --cls_label_list CLS_LABEL_LIST + --cls_batch_num CLS_BATCH_NUM + --cls_thresh CLS_THRESH + + Rec: + --rec_use_cuda REC_USE_CUDA + --rec_model_path REC_MODEL_PATH + --rec_img_shape REC_IMAGE_SHAPE + --rec_batch_num REC_BATCH_NUM + ``` + - 示例: + ```bash + $ rapidocr_onnxruntime -img tests/test_files/ch_en_num.jpg + ``` - # 输入格式三:bytes - with open(img_path, 'rb') as f: - img = f.read() - result, elapse = rapid_ocr(img) +### 源码使用步骤 - # 输入格式四:Path - result, elapse = rapid_ocr(Path(img_path)) - print(result) - ``` - - 命令行使用: - ```bash - $ rapidocr_onnxruntime -h - usage: rapidocr_onnxruntime [-h] -img IMG_PATH [-p] [--text_score TEXT_SCORE] - [--use_angle_cls USE_ANGLE_CLS] - [--use_text_det USE_TEXT_DET] - [--print_verbose PRINT_VERBOSE] - [--min_height MIN_HEIGHT] - [--width_height_ratio WIDTH_HEIGHT_RATIO] - [--det_use_cuda DET_USE_CUDA] - [--det_model_path DET_MODEL_PATH] - [--det_limit_side_len DET_LIMIT_SIDE_LEN] - [--det_limit_type {max,min}] - [--det_thresh DET_THRESH] - [--det_box_thresh DET_BOX_THRESH] - [--det_unclip_ratio DET_UNCLIP_RATIO] - [--det_use_dilation DET_USE_DILATION] - [--det_score_mode {slow,fast}] - [--cls_use_cuda CLS_USE_CUDA] - [--cls_model_path CLS_MODEL_PATH] - [--cls_image_shape CLS_IMAGE_SHAPE] - [--cls_label_list CLS_LABEL_LIST] - [--cls_batch_num CLS_BATCH_NUM] - [--cls_thresh CLS_THRESH] - [--rec_use_cuda REC_USE_CUDA] - [--rec_model_path REC_MODEL_PATH] - [--rec_img_shape REC_IMAGE_SHAPE] - [--rec_batch_num REC_BATCH_NUM] - - optional arguments: - -h, --help show this help message and exit - -img IMG_PATH, --img_path IMG_PATH MUST - -p, --print_cost - - Global: - --text_score TEXT_SCORE - --use_angle_cls USE_ANGLE_CLS - --use_text_det USE_TEXT_DET - --print_verbose PRINT_VERBOSE - --min_height MIN_HEIGHT - --width_height_ratio WIDTH_HEIGHT_RATIO - - Det: - --det_use_cuda DET_USE_CUDA - --det_model_path DET_MODEL_PATH - --det_limit_side_len DET_LIMIT_SIDE_LEN - --det_limit_type {max,min} - --det_thresh DET_THRESH - --det_box_thresh DET_BOX_THRESH - --det_unclip_ratio DET_UNCLIP_RATIO - --det_use_dilation DET_USE_DILATION - --det_score_mode {slow,fast} - - Cls: - --cls_use_cuda CLS_USE_CUDA - --cls_model_path CLS_MODEL_PATH - --cls_image_shape CLS_IMAGE_SHAPE - --cls_label_list CLS_LABEL_LIST - --cls_batch_num CLS_BATCH_NUM - --cls_thresh CLS_THRESH - - Rec: - --rec_use_cuda REC_USE_CUDA - --rec_model_path REC_MODEL_PATH - --rec_img_shape REC_IMAGE_SHAPE - --rec_batch_num REC_BATCH_NUM - - $ rapidocr_onnxruntime -img tests/test_files/ch_en_num.jpg - ``` +
-### 源码使用步骤 1. 下载整个项目到本地 ```shell cd RapidOCR/python ``` 2. 下载链接下的`resources`目录(包含模型和显示的字体文件) - - 下载链接:[Github](https://github.com/RapidAI/RapidOCR/releases/download/v1.1.0/resources.zip) | [Gitee](https://gitee.com/RapidAI/RapidOCR/releases/download/v1.1.0/resources.zip) | [百度网盘](https://pan.baidu.com/s/1PTcgXG2zEgQU6A_A3kGJ3Q?pwd=jhai) | [Google Drive](https://drive.google.com/drive/folders/1x_a9KpCo_1blxH1xFOfgKVkw1HYRVywY?usp=sharing) - - `resources/models`下模型搭配已经为最优组合(速度和精度平衡) - ```text - ch_PP-OCRv3_det + ch_ppocr_mobile_v2.0_cls + ch_PP-OCRv3_rec - ``` + - 下载链接:[百度网盘](https://pan.baidu.com/s/1PTcgXG2zEgQU6A_A3kGJ3Q?pwd=jhai) | [Google Drive](https://drive.google.com/drive/folders/1x_a9KpCo_1blxH1xFOfgKVkw1HYRVywY?usp=sharing) - 最终目录如下,自行比对: ```text . @@ -249,3 +242,4 @@ ```bash python demo.py ``` +
\ No newline at end of file