
# PP-OCRv4-server-rec ## 1. 模型简介 PP-OCRv4-server-rec 是 PaddleOCR 于2023年5月最新发布的服务端文本识别模型,可实现GPU上毫秒级的文本内容精准识别。基于 PP-OCRv4-server-rec 产学研界多方开发者已快速落地多个OCR应用,使用场景覆盖通用、制造、金融、交通等各个领域。 | <img src="https://github.com/PaddlePaddle/PaddleOCR/raw/release/2.6/doc/imgs_results/PP-OCRv3/ch/PP-OCRv3-pic001.jpg" style="height: 400px"> | <img src="https://camo.githubusercontent.com/3c5ae43b8971bcc5385bf6186943dced312549dcfbf965d6f8ed6d93e3218da4/68747470733a2f2f61692d73747564696f2d7374617469632d6f6e6c696e652e63646e2e626365626f732e636f6d2f62393733353636613438393734353863623465643736656362633865346138333864363861633437316135303463306461613537633137626332303363346530" style="height: 400px"> | | -------- | -------- | ## 2. 技术方案 PP-OCRv4-server-rec 是 PP-OCRv4 串联系统中的服务端文本识别模型,用于预测图片中文字的内容。其基础算法选用顶会算法[SVTR](https://arxiv.org/abs/2205.00159),并对其进行产业适配,使用蒸馏策略、[GTC](https://arxiv.org/pdf/2002.01276.pdf)指导策略等提升模型精度,实现移动端上实时、高精预测。 <p align="center"> <img src="https://ai-studio-static-online.cdn.bcebos.com/1a462ceae8a545faafe8e41ff31558527fea1afe9e6643969e08f84c4e03e1b2" align="middle" style="height: 400px"> </p> 详细的技术实现可参考阅读:[PP-OCRv4 技术报告](https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/doc/doc_ch/PP-OCRv4_introduction.md) ## 3. 如何使用 ### 3.1 数据准备 在完成数据标注工作后,请按照[数据集规范说明](https://ai.baidu.com/ai-doc/AISTUDIO/Clkg7m4y9#%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E4%BB%BB%E5%8A%A1)检查数据组织格式是否满足要求。如果不满足,请参照规范说明进行调整,否则将导致后面的数据校验环节无法通过。 完成数据准备后,点击右上角【创建模型产线】。 在 AI Studio 云端,可以通过挂载数据集的方式来使用自己的数据。模型产线创建和修改窗口可以挂载和管理数据集,如下图所示。数据集挂载成功后,需在开发者模式中查看并解压挂载的数据集,数据集路径查看方式为【开发者模式】-左侧【资源管理器】,在目录 `AISTUDIO/data` 下,数据集解压方式为【开发者模式】-左侧【菜单】-【终端】-【新建终端】,在【终端】中通过命令行方式解压,并将解压后的数据集路径拷贝到【工具箱模式】-【数据校验】-【数据集路径】。**注意:在 AI Studio 云端,`data` 目录不持久化存储,如需持久化存储,需要将数据解压至其它目录。** <div align=center> <img src="https://github.com/PaddlePaddle/PaddleClas/assets/12560511/144c59db-0354-403e-9b7d-83c3f84d6de1" style="height: 400px"><img src="https://github.com/PaddlePaddle/PaddleClas/assets/12560511/9078fb3e-3c37-40f5-aeed-4139d23daa14" style="height: 400px"> </div> 在本地端-工具箱模式中,您可以直接在【工具箱模式】-【数据校验】-【数据集路径】中填写本地数据路径来使用自己的数据集。 在配置完成【数据集路径】后,即可点击【开始校验】按钮进行数据集校验。 更多详细说明,请参考[在线文档](https://ai.baidu.com/ai-doc/AISTUDIO/Zlist35hy#%E6%95%B0%E6%8D%AE%E6%A0%A1%E9%AA%8C)。 ### 3.2 模型训练 PaddleX提供 `工具箱模式` 和 `开发者模式` 两种开发模式: - `工具箱模式` 推荐 AI 开发经验较少的开发者使用,高阶开发者也可以使用这个模式来提高开发效率。工具箱模式利用 gradio 搭建 webui 工具链,可以实现无代码 AI 模型开发。主要包含数据校验、模型训练、评估测试和模型部署四个环节。可以根据实际需求选择模型结构、骨干网络及对应的训练参数、优化策略,使得任务效果最佳。关于工具箱模式的完整使用请参考[在线文档](https://ai.baidu.com/ai-doc/AISTUDIO/Zlist35hy)。**注意:工具箱模式中的训练轮次、批大小、学习率等参数的默认值仅适用于官方提供的示例数据集,对于自己的数据集,需要进行针对性的调整。可以参考参数设置经验,例如学习率对训练效果影响较大,建议放缩进行多次尝试,对于难度较大的任务,可以适当增加训练轮次数以获得更佳效果。** <img src="https://github.com/PaddlePaddle/PaddleOCR/assets/87074272/0967f7df-7ae6-402d-84f2-a59f76975ca0" style="height: 400px"> - `开发者模式` 推荐 AI 开发经验较丰富度的开发者使用,集成了 VSCode IDE 环境,并内置飞桨统一模型开发 API——UAPI,可以使用统一的 API 接口进行开发,仅需 5 行命令即可完成基础模型训练、推理、评估导出以及多模型组合预测。同时,在开发者模式中可以编辑工具箱模式的源码,以实现工具箱模式 DIY。关于开发者模式的完整使用请参考[在线文档](https://ai.baidu.com/ai-doc/AISTUDIO/Mlist5jov)。 ### 3.3 模型部署 使用工具箱或开发者模式完成模型训练后,就可以在工具箱模式进行模型部署了。需注意,目前必须经过导出预测模型后才会产生用于部署的静态图模型。目前提供了模型在不同操作系统、不同部署硬件、不同接口语言条件下的部署包 SDK 获取方式。 <img src="https://github.com/PaddlePaddle/PaddleSeg/assets/108920665/8b2a21b6-195f-4ce9-aad0-f2adcf3457f8" style="height: 400px"> 本模型不支持单独部署,请进入通用OCR产线与文本检测模型一起完成串联系统部署: 1. 在`单模型产线中`完成模型评估后,可得到推理模型,具体请进入`开发者模式` ,压缩并下载 `/home/aistudio/output/infer` 目录。 2. 更新 [通用OCR场景产线](https://aistudio.baidu.com/aistudio/modelsdetail?modelId=286) 中的模型路径,具体请进入 `开发者模式` 上传推理模型并解压,在工具箱模式中把推理模型目录的绝对路径地址(`your/path/infer`)填写在 <设置检测模型文件来源> 中。 通用OCR目前的部署支持情况如下: | 操作系统 | Windows | Windows | Windows | Windows | Linux | Linux | Linux | Linux | | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | | 部署硬件 | NV GPU | NV GPU | X86 CPU | X86 CPU | NV GPU | NV GPU | X86 CPU | X86 CPU | | 接口语言 | C++ | Python | C++ | Python | C++ | Python | C++ | Python | | 支持情况 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 根据实际业务需求选择所需要的操作系统、部署硬件、接口语言等条件后,获取 FastDeploy 部署包,**完成之后到开发者模式下进行下载(文件右击选择下载即可)**,其中包括部署代码和预测模型。 最后就可以参考部署包里面的 README 使用说明,在目标硬件上进行部署啦。 **注意:如果需要更新预测模型,可以直接修改部署包中的预测模型。**