Project Icon

mindocr

基于MindSpore的开源OCR工具包 实现高效文本检测与识别

MindOCR是一个基于MindSpore的开源OCR开发工具箱,集成主流文本检测和识别算法。该工具箱提供易用的训练和推理接口,加速文本检测识别模型的开发和部署。MindOCR支持DBNet、CRNN等多种算法,采用模块化设计,并提供高性能预训练模型。研究人员和开发者可以利用MindOCR快速构建OCR应用,实现高效的图像文本理解。

MindOCR

简介

MindOCR是一个基于MindSpore的开源OCR开发和应用工具箱,集成了一系列主流文本检测和识别算法/模型,提供易用的训练和推理工具。它可以加速将最先进的文本检测和识别模型应用于实际场景的过程,如DBNet/DBNet++和CRNN/SVTR等,并有助于满足图像文本理解的需求。

主要特点
  • 模块化设计:我们将OCR任务解耦为几个可配置的模块。用户只需修改几行代码,就可以轻松设置训练和评估流程,自定义数据处理流程和模型架构。
  • 高性能:MindOCR提供了一系列经过优化配置训练的预训练权重,在OCR任务上达到了具有竞争力的性能。
  • 低成本应用:MindOCR提供了易用的推理工具来执行文本检测和识别任务。

以下是对应的mindocr版本和支持的mindspore版本。

mindocrmindspore
mastermaster
0.42.3.0
0.32.2.10
0.11.8

安装

详细信息

前提条件

MindOCR基于MindSpore AI框架构建,并与以下框架版本兼容。有关详细信息和安装指南,请参考下面显示的安装链接。

  • mindspore >= 2.2.0 [安装]
  • python >= 3.7
  • openmpi 4.0.3 (用于分布式训练/评估) [安装]
  • mindspore lite (用于离线推理) >= 2.2.0 [安装]

依赖

pip install -r requirements.txt

从源代码安装(推荐)

git clone https://github.com/mindspore-lab/mindocr.git
cd mindocr
pip install -e .

使用-e表示"可编辑"模式可以帮助解决潜在的模块导入问题。

从docker安装

提供的docker环境信息如下:

  • 操作系统:Euler2.8
  • CANN:7.0
  • Python:3.9
  • MindSpore:2.2.10
  • MindSpore Lite:2.2.10

请按照以下步骤安装docker:

  1. 下载docker

    • 910:
      docker pull swr.cn-central-221.ovaijisuan.com/mindocr/mindocr_dev_910_ms_2_2_10_cann7_0_py39:v1
      
    • 910*:
      docker pull swr.cn-central-221.ovaijisuan.com/mindocr/mindocr_dev_ms_2_2_10_cann7_0_py39:v1
      
  2. 创建容器

    docker_name="temp_mindocr"
    # 910
    image_name="swr.cn-central-221.ovaijisuan.com/mindocr/mindocr_dev_910_ms_2_2_10_cann7_0_py39:v1"
    # 910*
    image_name="swr.cn-central-221.ovaijisuan.com/mindocr/mindocr_dev_ms_2_2_10_cann7_0_py39:v1"
    
    docker run --privileged --name ${docker_name} \
        --tmpfs /tmp \
        --tmpfs /run \
        -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
        --device=/dev/davinci1 \
        --device=/dev/davinci2 \
        --device=/dev/davinci3 \
        --device=/dev/davinci4 \
        --device=/dev/davinci5 \
        --device=/dev/davinci6 \
        --device=/dev/davinci7 \
        --device=/dev/davinci_manager \
        --device=/dev/hisi_hdc \
        --device=/dev/devmm_svm \
        -v /etc/localtime:/etc/localtime \
        -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
        -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
        --shm-size 800g \
        --cpus 96 \
        --security-opt seccomp=unconfined \
        --network=bridge -itd ${image_name} bash
    
  3. 进入容器

    # 设置docker id
    container_id="你的docker id"
    docker exec -it --user root $container_id bash
    
  4. 设置环境变量 进入容器后,使用以下命令设置环境变量:

    source env_setup.sh
    

从PyPI安装

pip install mindocr

由于该项目正在积极开发中,当前从PyPI安装的版本可能已过时(将很快更新)。

快速开始

1. 文本检测和识别演示

安装MindOCR后,我们可以轻松地在任意图像上运行文本检测和识别,如下所示。

python tools/infer/text/predict_system.py --image_dir {path_to_img or dir_to_imgs} \
                                          --det_algorithm DB++  \
                                          --rec_algorithm CRNN

运行后,结果将默认保存在./inference_results中。以下是一个示例结果。

文本检测和识别结果可视化

我们可以看到,图像上的所有文本都被准确地检测和识别出来了。有关更多用法,请参考教程中的推理部分。

2. 模型训练和评估 - 快速指南

使用tools/train.py脚本可以轻松训练您的OCR模型,该脚本支持文本检测和识别模型的训练。

python tools/train.py --config {path/to/model_config.yaml}

--config参数指定了一个yaml文件的路径,该文件定义了要训练的模型和训练策略,包括数据处理流程、优化器、学习率调度器等。

MindOCR在configs文件夹中提供了带有训练策略的最先进OCR模型。 您可以根据自己的任务/数据集进行调整,例如,通过运行以下命令:

# 在icdar15数据集上训练文本检测模型DBNet++
python tools/train.py --config configs/det/dbnet/dbpp_r50_icdar15.yaml
# 在icdar15数据集上训练文本识别模型CRNN
python tools/train.py --config configs/rec/crnn/crnn_icdar15.yaml

同样地,可以使用 tools/eval.py 脚本轻松评估训练好的模型。

python tools/eval.py \
    --config {模型配置文件路径} \
    --opt eval.dataset_root={数据集路径} eval.ckpt_load_path={检查点文件路径}

更多说明和用法,请参阅教程中的模型训练部分。

3. 模型离线推理 - 快速指南

您可以使用MindOCR模型第三方模型(PaddleOCR、MMOCR等)在MindOCR中进行MindSpore Lite推理。请参考以下文档:

教程

模型列表

文本检测
文本识别
版面分析
关键信息抽取
表格识别
OCR大模型

有关已训练模型的详细性能,请参阅https://github.com/mindspore-lab/mindocr/blob/main/configs

有关MindSpore Lite和ACL推理模型支持的详细信息,请参阅MindOCR模型支持列表第三方模型支持列表(PaddleOCR、MMOCR等)。

数据集列表

MindOCR提供了一个数据集转换工具来处理不同格式的OCR数据集,并支持用户自定义数据集。我们已经在模型训练/评估中验证了以下公开的OCR数据集。

通用OCR数据集 - [数字出生图像](https://rrc.cvc.uab.es/?ch=1) [[下载](docs/en/datasets/borndigital.md)] - [CASIA-10K](http://www.nlpr.ia.ac.cn/pal/CASIA10K.html) [[下载](docs/en/datasets/casia10k.md)] - [CCPD](https://github.com/detectRecog/CCPD) [[下载](docs/en/datasets/ccpd.md)] - [中文文本识别基准](https://github.com/FudanVI/benchmarking-chinese-text-recognition) [[论文](https://arxiv.org/abs/2112.15093)] [[下载](docs/en/datasets/chinese_text_recognition.md)] - [COCO-Text](https://rrc.cvc.uab.es/?ch=5) [[下载](docs/en/datasets/cocotext.md)] - [CTW](https://ctwdataset.github.io/) [[下载](docs/en/datasets/ctw.md)] - [ICDAR2015](https://rrc.cvc.uab.es/?ch=4) [[论文](https://rrc.cvc.uab.es/files/short_rrc_2015.pdf)] [[下载](docs/en/datasets/icdar2015.md)] - [ICDAR2019 ArT](https://rrc.cvc.uab.es/?ch=14) [[下载](docs/en/datasets/ic19_art.md)] - [LSVT](https://rrc.cvc.uab.es/?ch=16) [[下载](docs/en/datasets/lsvt.md)] - [MLT2017](https://rrc.cvc.uab.es/?ch=8) [[论文](https://ieeexplore.ieee.org/abstract/document/8270168)] [[下载](docs/en/datasets/mlt2017.md)] - [MSRA-TD500](http://www.iapr-tc11.org/mediawiki/index.php/MSRA_Text_Detection_500_Database_(MSRA-TD500)) [[论文](https://ieeexplore.ieee.org/abstract/document/6247787)] [[下载](docs/en/datasets/td500.md)] - [MTWI-2018](https://tianchi.aliyun.com/competition/entrance/231651/introduction) [[下载](docs/en/datasets/mtwi2018.md)] - [RCTW-17](https://rctw.vlrlab.net/) [[下载](docs/en/datasets/rctw17.md)] - [ReCTS](https://rrc.cvc.uab.es/?ch=12) [[下载](docs/en/datasets/rects.md)] - [SCUT-CTW1500](https://github.com/Yuliang-Liu/Curve-Text-Detector) [[论文](https://www.sciencedirect.com/science/article/pii/S0031320319300664)] [[下载](docs/en/datasets/ctw1500.md)] - [SROIE](https://rrc.cvc.uab.es/?ch=13) [[下载](docs/en/datasets/sroie.md)] - [SVT](http://www.iapr-tc11.org/mediawiki/index.php/The_Street_View_Text_Dataset) [[下载](docs/en/datasets/svt.md)] - [SynText150k](https://github.com/aim-uofa/AdelaiDet) [[论文](https://arxiv.org/abs/2002.10200)] [[下载](docs/en/datasets/syntext150k.md)] - [SynthText](https://www.robots.ox.ac.uk/~vgg/data/scenetext/) [[论文](https://www.robots.ox.ac.uk/~vgg/publications/2016/Gupta16/)] [[下载](docs/en/datasets/synthtext.md)] - [TextOCR](https://textvqa.org/textocr/) [[下载](docs/en/datasets/textocr.md)] - [Total-Text](https://github.com/cs-chan/Total-Text-Dataset/tree/master/Dataset) [[论文](https://arxiv.org/abs/1710.10400)] [[下载](docs/en/datasets/totaltext.md)]
版面分析数据集
关键信息提取数据集
表格识别数据集

我们将包含更多用于训练和评估的数据集。此列表将持续更新。

常见问题

关于配置环境和MindOCR的常见问题,请参阅常见问题

注意事项

最新动态

新闻
  • 2023/04/01
  1. 添加新的训练模型
  • 2024/03/20
  1. 添加新的训练模型
    • 用于OCR大模型的Vary-toy,提供基于Qwen-1.8B LLM的目标检测和OCR能力
  • 2023/12/25
  1. 添加新的训练模型
  2. 添加更多基准数据集及其结果
  • 2023/12/14
  1. 新增训练模型
  2. 增加更多基准数据集及其结果
  3. 支持多种规格的Ascend 910:DBNet ResNet-50、DBNet++ ResNet-50、CRNN VGG7、SVTR-Tiny、FCENet、ABINet
  • 2023/11/28
  1. 增加PP-OCRv4离线推理支持
  2. 修复第三方模型离线推理的错误
  • 2023/11/17
  1. 新增训练模型
  2. 增加更多基准数据集及其结果
  • 2023/07/06
  1. 新增训练模型
  • 2023/07/05
  1. 新增训练模型
  • 2023/06/29
  1. 新增训练模型
  • 2023/06/07
  1. 新增训练模型
    • 用于文本检测的PSENet
    • 用于文本检测的EAST
    • 用于文本识别的SVTR
  2. 增加更多基准数据集及其结果
  3. 增加恢复训练功能,可用于意外中断训练时。使用方法:在yaml配置文件的model字段下添加resume参数,例如resume: True,从{ckpt_save_dir}/train_resume.ckpt加载并恢复训练,或resume: /path/to/train_resume.ckpt,从给定路径加载并恢复训练。
  4. 改进检测后处理:默认将检测到的文本多边形重新缩放到原始图像空间,可通过在eval.dataset.output_columns列表中添加"shape_list"来启用。
  5. 重构在线推理以支持更多模型,详见README.md
  • 2023/05/15
  1. 新增训练模型
  2. 增加更多基准数据集及其结果
  3. 添加检查点管理器以保存前k个检查点并改进日志。
  4. 重构Python推理代码。
  5. 错误修复:使用Meter平均大数据集的损失,在AMP训练中禁用ctcloss的pred_cast_fp32,修复存在无效多边形时的错误。
  • 2023/05/04
  1. 支持通过在yaml中设置model-pretrained为检查点url或本地路径来加载自定义预训练检查点。
  2. 支持设置执行旋转和翻转等增强的概率。
  3. 为模型训练添加指数移动平均(EMA),可通过在yaml配置中设置train-ema(默认:False)和train-ema_decay启用。
  4. 参数变更:num_columns_to_net -> net_input_column_index:将输入网络的列数改为列索引。
  5. 参数变更:num_columns_of_labels -> label_column_index:将对应标签的列数改为列索引。
  • 2023/04/21
  1. 添加参数分组以支持训练中的灵活正则化。用法:在yaml配置中添加grouping_strategy参数选择预定义的分组策略,或使用no_weight_decay_params参数选择要排除权重衰减的层(如偏置、归一化)。示例可参考configs/rec/crnn/crnn_icdar15.yaml
  2. 添加梯度累积以支持大批量训练。用法:在yaml配置中添加gradient_accumulation_steps,全局批量大小 = batch_size * devices * gradient_accumulation_steps。示例可参考configs/rec/crnn/crnn_icdar15.yaml
  3. 添加梯度裁剪以支持训练稳定。通过在yaml配置中设置grad_clip为True来启用。
  • 2023/03/23
  1. 添加动态损失缩放器支持,兼容溢出丢弃更新。要启用动态损失缩放器,请将loss_scaletype设置为dynamic。YAML示例可在configs/rec/crnn/crnn_icdar15.yaml中查看。
  • 2023/03/20
  1. 参数名称变更:output_keys -> output_columnsnum_keys_to_net -> num_columns_to_net
  2. 数据管道更新
  • 2023/03/13
  1. 添加系统测试和CI工作流。
  2. 添加modelarts适配器以允许在OpenI平台上训练。在OpenI上训练:
        i)   在openi云平台上创建新的训练任务。
        ii)  在网页上链接数据集(如ic15_mindocr)。
        iii) 在网站UI界面添加运行参数`config`并写入yaml文件路径,例如'/home/work/user-job-dir/V0001/configs/rec/test.yaml'
        iv)  在网站UI界面添加运行参数`enable_modelarts`并设置为True。
        v)   填写其他空白并启动。
    

如何贡献

我们欢迎各种形式的贡献,包括问题和PR,以使MindOCR变得更好。

请参考CONTRIBUTING.md了解贡献指南。请遵循模型模板和指南贡献适合整体接口的模型 :)

许可证

本项目遵循Apache License 2.0开源许可证。

引用

如果您在研究中发现此项目有用,请考虑引用:

@misc{MindSpore OCR 2023,
    title={{MindSpore OCR }:MindSpore OCR 工具箱},
    author={MindSpore 团队},
    howpublished = {\url{https://github.com/mindspore-lab/mindocr/}},
    year={2023}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号