印地语-英语OCR


本文介绍利用PaddleOCR训练调优印地语-英语OCR模型的过程。先配置环境、准备检测和识别数据,再训练检测模型并通过自蒸馏调优,使H-mean提升约15.2%;训练识别模型并以enhanced_ctc调优,准确率提升2%左右。最后将模型转成inference和serving模型,完成部署与服务请求。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

印地语-英语OCR训练与调优

  • 有些公司在海外,比如印度有诸多业务,有时需要对印度网上的图片信息进行提取,而文字是最有用的信息,方便后续的分析。印度的官方语言包括英语和印地语,因此图片上经常会出现印地语和英语混杂出现的情况。这时就需要有能同时检测和识别印地语-英语的模型。PaddleOCR提供了一系列套件能快速训练一个检测模型和识别模型,并借助paddle serving进行快速部署。
  • 本案例采集并标注了202张图像用于检测模型训练和验证,生成了10000张图像用于识别模型训练,标注了138张真实场景下的图像用于识别模型验证。以下文档包含了检测模型训练和调优、识别模型训练和调优、模型推理部署三个部分。
  • 所有训练好的模型和配置均在output文件夹里

1. 环境配置以及数据准备

1.1 环境配置

运行下方代码,拉取PaddleOCR以及安装PaddleOCR的依赖库。

import os
import sys# 下载代码os.chdir("/home/aistudio/work/")
!git clone https://gitee.com/paddlepaddle/PaddleOCR.git# 切换工作目录os.chdir("/home/aistudio/PaddleOCR/")# 安装依赖!pip install -U pip
!pip install -r requirements.txt
       

1.2 数据准备

  • 检测数据已开源:https://aistudio.baidu.com/aistudio/datasetdetail/124124015
  • 识别数据已开源:https://aistudio.baidu.com/aistudio/datasetdetail/124124014
  • 当前项目已默认加载这两个数据集,运行下方代码解压数据集到work文件夹下。
# 创建文件夹!mkdir ~/work/detection
!mkdir ~/work/recognition# 复制和解压检测数据!cp ~/data/data124124015/train.txt ~/work/detection
!cp ~/data/data124124015/test.txt ~/work/detection
!tar xf ~/data/data124124014/imgs.tar -C ~/work/detection# 复制和解压识别数据!cp ~/data/data124124014/train.txt ~/work/recognition
!cp ~/data/data124124014/test.txt ~/work/recognition
!cp ~/data/data124124014/hindi.txt ~/work/recognition
!tar xf ~/data/data124124014/train_img.tar -C ~/work/recognition
!tar xf ~/data/data124124014/test_img.tar -C ~/work/recognition
   

2. 检测模型训练和调优

2.1 预训练模型准备

为了加速训练,采用ppocr的原始超轻量模型。运行下方代码准备预训练模型。

import os
os.chdir("/home/aistudio/work/PaddleOCR/")# 创建预训练模型目录!mkdir pretrain_models
os.chdir("/home/aistudio/work/PaddleOCR/pretrain_models")# 下载并解压预训练模型!wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_train.tar && tar xf ch_ppocr_mobile_v2.0_det_train.tar
       

2.2 模型训练

先修改./configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml配置文件,主要包括预训练模型路径、数据集路径两部分,此外还有模型验证步数、训练图像尺寸改变、验证图像尺寸改变等。(本项目中配置文件已修改)

Global:
  └─save_model_dir: ./output/ch_db_mv3_original/
  └─eval_batch_step: [0, 18]
  └─pretrained_model: ./pretrain_models/ch_ppocr_mobile_v2.0_det_train/best_accuracy
Train:
  └─dataset
	└─data_dir: /home/aistudio/work/detection/imgs
	└─label_file_list: /home/aistudio/work/detection/train.txt
    └─transforms:
      └─EastRandomCropData:
        └─size: [640, 640]  # 改小尺寸加快训练Eval:
  └─dataset
    └─data_dir:/home/aistudio/work/detection/imgs
	└─label_file_list: /home/aistudio/work/detection/test.txt
    └─transforms:
      └─DetResizeForTest:
        └─image_shape: [1280, 736]  # 图像大多是竖着的,因此改成高>宽
       

然后运行下方代码启动训练。

!python3 tools/train.py -c ./configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml
       

2.3 模型调优

模型调优采用自蒸馏算法,修改./configs/det/ch_PP-OCRv2/ch_PP-OCRv2_det_dml.yml配置文件,学生1加载2.2训练好的模型,学生2加载预训练模型,其余配置跟2.2保持一致。

Global:
  └─save_model_dir: ./output/ch_db_mv3_dml/
  └─eval_batch_step: [0, 36]
Architecture:
  └─Models:
    └─Student:
      └─pretrained: ./output/ch_db_mv3_original/best_accuracy
    └─Student2:
      └─pretrained: ./pretrain_models/ch_ppocr_mobile_v2.0_det_train/best_accuracy
       

运行下方代码启动训练

!python3 tools/train.py -c ./configs/det/ch_PP-OCRv2/ch_PP-OCRv2_det_dml.yml
       

2.4 测试集评估

分别测试预训练模型、微调后模型和调优后模型的Precision、Recall、H-mean(F-Score)指标。

# 原始模型!python3 tools/eval.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml  -o Global.checkpoints="./pretrain_models/ch_ppocr_mobile_v2.0_det_train/best_accuracy"# Finetune后模型!python3 tools/eval.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml  -o Global.checkpoints="./output/ch_db_mv3_original/best_accuracy"# 调优后模型!python3 tools/eval.py -c configs/det/ch_PP-OCRv2/ch_PP-OCRv2_det_dml.yml  -o Global.checkpoints="./output/ch_db_mv3_dml/best_accuracy"
       

获得结果如下,经过finetune后的模型在综合指标H-mean上比原先提升15%左右,经过蒸馏调优后能再提升0.2%左右。

Model Precision Recall H-mean
PP-OCR mobile 0.6996 0.8451 0.7655
PP-OCR mobile finetune 0.9048 0.9248 0.9147
PP-OCR mobile distill 0.9087 0.9248 0.9167

3. 识别模型训练和调优

3.1 预训练模型准备

为了加速训练,采用ppocr的梵文预训练模型来加速训练。运行下方代码准备预训练模型。

import os
os.chdir("/home/aistudio/work/PaddleOCR/pretrain_models")# 下载并解压预训练模型!wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/devanagari_ppocr_mobile_v2.0_rec_train.tar && tar xf devanagari_ppocr_mobile_v2.0_rec_train.tar
       

3.2 模型训练

先修改./configs/rec/multi_language/rec_devanagari_lite_train.yml配置文件,主要包括预训练模型路径、数据集路径等。(本项目中配置文件已修改)

Global:
  └─save_model_dir: ./output/rec_hindi_en
  └─eval_batch_step: [0, 120]
  └─save_epoch_step: 30
  └─pretrained_model: ./pretrain_models/ch_ppocr_mobile_v2.0_det_train/best_accuracy
  └─character_dict_path: /home/aistudio/work/recognition/hindi.txt
  └─max_text_length: 70
  └─use_space_char: falseTrain:
  └─dataset
	└─data_dir: /home/aistudio/work/recognition/TrainImages
	└─label_file_list: /home/aistudio/work/recognition/train.txt
    └─transforms:
      └─RecAug:
        └─use_tia: false  # 不使用tia增强
Eval:
  └─dataset
    └─data_dir: /home/aistudio/work/recognition/TestImages
	└─label_file_list: /home/aistudio/work/recognition/test.txt
       

然后运行下方代码启动训练。

!python3 tools/train.py -c ./configs/rec/multi_language/rec_devanagari_lite_train.yml
       

3.3 模型调优

模型调优采用enhanced_ctc算法,增加./configs/rec/multi_language/rec_devanagari_lite_enhanced_ctc.yml配置文件,需要修改的地方如下,其余配置跟3.2保持一致。

Global:
  └─save_model_dir: ./output/rec_hindi_en_enhanced_ctc
  └─pretrained_model: ./output/rec_hindi_en/best_accuracy
  
Architecture:
  └─Head:
    └─return_feats: true
Loss:
  └─name: CombinedLoss
  └─loss_config_list:
    └─CTCLoss:
      └─use_focal_loss: false
      └─weight: 1.0
    └─CenterLoss:
      └─weight: 0.05
      └─num_classes: 176
      └─feat_dim: 96
      └─center_file_path: ./train_center.pkl
       

采用这种方法需要先生成center文件,运行下面代码生成train_center.pkl文件

!python tools/export_center.py -c ./configs/rec/multi_language/rec_devanagari_lite_train.yml -o Global.pretrained_model="./output/rec_hindi_en/best_accuracy"
       

运行下方代码启动训练

!python3 tools/train.py -c ./configs/rec/multi_language/rec_devanagari_lite_enhanced_ctc.yml
       

3.4 测试集评估

分别测试微调后模型和调优后模型的Accuracy指标。

# Finetune后模型!python3 tools/eval.py -c configs/rec/multi_language/rec_devanagari_lite_train.yml  -o Global.checkpoints="./output/rec_hindi_en/best_accuracy"# 调优后模型!python3 tools/eval.py -c configs/rec/multi_language/rec_devanagari_lite_enhanced_ctc.yml  -o Global.checkpoints="./output/rec_hindi_en_enhanced_ctc/best_accuracy"
       

获得结果如下,经过调优后性能提升2%左右。

Model Accuracy
PP-OCR mobile finetune 0.5000
PP-OCR mobile enhanced_ctc 0.5217

4. 预测部署

这里使用Paddle Serving套件进行部署。

4.1 转inference模型

# 转检测模型
!python tools/export_model.py -c configs/det/ch_PP-OCRv2/ch_PP-OCRv2_det_dml.yml  -o Global.checkpoints="./output/ch_db_mv3_dml/best_accuracy" Global.save_inference_dir="./det_model"# 转识别模型
!python tools/export_model.py -c configs/rec/multi_language/rec_devanagari_lite_enhanced_ctc.yml  -o Global.checkpoints="./output/rec_hindi_en_enhanced_ctc/best_accuracy" Global.save_inference_dir="./rec_model"
       

4.2 推理可视化

显示印地语需要专门的字体文件,该字体文件已传到"/home/aistudio/work/PaddleOCR/StyleText/fonts/hindi.ttf"上。运行下方命令可获得可视化效果。

In [16]
import osimport cv2import matplotlib.pyplot as plt# 进入PaddleOCR目录os.chdir("/home/aistudio/work/PaddleOCR/")# 运行推断程序!python tools/infer/predict_system.py \
    --image_dir="/home/aistudio/work/detection/imgs/Google_0063.jpeg" \
    --det_model_dir="./det_model/Student/" \
    --rec_model_dir="./rec_model/" \
    --rec_char_dict_path="/home/aistudio/work/recognition/hindi.txt" \
    --use_space_char=False \
    --vis_font_path="/home/aistudio/work/PaddleOCR/StyleText/fonts/hindi.ttf"# 展示推断结果img = cv2.imread("/home/aistudio/work/PaddleOCR/inference_results/Google_0063.jpeg")
plt.figure(figsize=(30, 10))
plt.imshow(img[..., ::-1])
plt.show()
       
[2025/01/06 16:23:53] root DEBUG: dt_boxes num : 6, elapse : 2.748750925064087
[2025/01/06 16:23:53] root DEBUG: rec_res num  : 6, elapse : 0.018050670623779297
[2025/01/06 16:23:53] root DEBUG: 0  Predict time of /home/aistudio/work/detection/imgs/Google_0063.jpeg: 2.771s
[2025/01/06 16:23:53] root DEBUG: बी ए समेस्टर- I पीयाू, 0.895
[2025/01/06 16:23:53] root DEBUG: प्राचीन भारत, 0.945
[2025/01/06 16:23:53] root DEBUG: का, 0.822
[2025/01/06 16:23:53] root DEBUG: इतिहास, 1.000
[2025/01/06 16:23:53] root DEBUG: Jizooड़े-तक, 0.812
[2025/01/06 16:23:53] root DEBUG: डाँ क्रांति कमार गुप्ता l डोँ मोइरंगथम प्रमोद, 0.958
[2025/01/06 16:23:53] root DEBUG: The visualized image saved in ./inference_results/Google_0063.jpeg
[2025/01/06 16:23:53] root INFO: The predict total time is 2.813556432723999
       
               

4.3 Paddle Serving环境准备

运行Paddle Serving,需要安装Paddle Serving三个安装包:paddle-serving-server、paddle-serving-client 和 paddle-serving-app,命令如下。

!wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_server_gpu-0.7.0.post102-py3-none-any.whl
!pip install paddle_serving_server_gpu-0.7.0.post102-py3-none-any.whl

!wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_client-0.7.0-cp37-none-any.whl
!pip install paddle_serving_client-0.7.0-cp37-none-any.whl

!wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_app-0.7.0-py3-none-any.whl
!pip install paddle_serving_app-0.7.0-py3-none-any.whl

!rm ./*.whl
       

4.4 转serving模型

运行下方代码将inference模型转换成serving模型

# 转换检测模型!python -m paddle_serving_client.convert --dirname ./det_model/ \                                         --model_filename inference.pdmodel          \                                         --params_filename inference.pdiparams       \                                         --serving_server ./det_serving/ \                                         --serving_client ./det_client/# 转换识别模型!python -m paddle_serving_client.convert --dirname ./rec_model/ \                                         --model_filename inference.pdmodel          \                                         --params_filename inference.pdiparams       \                                         --serving_server ./rec_serving/  \                                         --serving_client ./rec_client/
       

4.5启动服务和请求服务

  1. 修改PaddleOCR/deploy/pdserving/config.yml文件。
op:
  └─det:
    └─local_service_conf:
      └─model_config: /home/aistudio/work/PaddleOCR/det_serving
  └─rec:
    └─local_service_conf:
      └─model_config: /home/aistudio/work/PaddleOCR/rec_serving
       
  1. 修改PaddleOCR/deploy/pdserving/web_service.py文件中的字体路径
class RecOp(Op):
    def init_op(self):
        self.ocr_reader = OCRReader(
            char_dict_path="/home/aistudio/work/recognition/hindi.txt")
       
  1. 运行如下命令启动服务 开启新的终端运行下列启动服务的命令。
cd PaddleOCR/deploy/pdserving/python web_service.py
       

效果如下图。        

  1. 在另一个终端下运行请求服务命令
cd PaddleOCR/deploy/pdserving/
python pipeline_http_client.py --image_dir "/home/aistudio/work/detection/imgs"
       

效果如下图        


# 英语  # 这两个  # 如下图  # 开源  # 主要包括  # 套件  # 加载  # 印度  # 印地  # python  # 配置文件  # https  # ocr  # 算法  # igs  # red  # ai  # git 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化91478 】 【 技术知识72672 】 【 云计算0 】 【 GEO优化84317 】 【 优选文章0 】 【 营销推广36048 】 【 网络运营41350 】 【 案例网站102563 】 【 AI智能45237


相关推荐: 开源AI Agent项目精选:赋能智能自动化  深度解析Coldplay酷玩乐队《Viva la Vida》的音乐内涵  医疗专家如何利用课程和内容赋能女性对抗癌症  PlotDot Horizon:AI编剧工具颠覆好莱坞?深度评测  lumen5怎样从新闻稿生成社交视频_Lumen5新闻稿转社交视频步骤【社媒】  ChatGPT一键生成PPT怎么加目录_ChatGPTPPT目录添加【步骤】  AI赋能:五款颠覆性工具助你在线赚钱  Claude怎么用新功能代码辅助_Claude代码辅助使用攻略【方法】  掌握写作技巧:小说情节设计的核心要素解析  美食ASMR:感官盛宴与解压体验  探索未来:AI机器人AURORA揭秘亚特兰蒂斯之谜  播客数据深度分析:用户地域分布及增长策略探讨  3步教你用AI帮你把菜谱转换成详细的烹饪步骤视频脚本  斑马AI如何设置奖励机制_斑马AI积分奖励与勋章获取【步骤】  如何让ChatGPT模仿特定文风 创意写作与品牌话术生成教程  批改网ai检测工具怎么设置检测严格度_批改网ai检测工具严格度调整【技巧】  Sim.AI教程:构建智能客户支持助手  讯飞星火怎么一键生成|直播|话术_讯飞星火话术生成与节奏把控【教程】  Canva AI 辅助 KDP 封面设计:轻松创建畅销书笔记本  Codeforces Pair Programming Problem: C 解题思路  AI驱动营销:如何利用人工智能构建高效营销漏斗  利用AI快速生成数组和枚举:详细指南与实用技巧  AI写作鱼怎么一键生成朋友圈文案_AI写作鱼文案风格切换与字数设置【指南】  轻松创建引人入胜短视频:Riverside.fm教程  tofai登录入口官网 tofai网页版地址链接  AI 编码助手:提升效率的 5 大工具及应用详解  都灵裹尸布之谜:AI揭示耶稣基督的真实面貌?  AI赋能科研探索:Google Research创新加速科学发现  Beats to Rap On AI Stem Splitter:终极音乐创作工具  Comet浏览器:使用ChatGPT增强您的搜索体验  Claude怎么用新功能代码调试_Claude代码调试使用【方法】  探索弦乐器世界:从吉他到卡曼切,乐器全解析  如何利用文心一言优化知乎高赞回答的逻辑结构  唐库AI拆书工具怎么查看拆书进度_唐库AI拆书工具进度查看与异常排查【方法】  AI视频工具:加速内容创作,提升效率的终极指南  Claude如何关闭自动续费_Claude续费关闭方法【方法】  美图AI海报设计怎样匹配品牌VI_美图AI海报设计VI匹配与色彩校准【教程】  AI在软件测试中的应用:提升效率与质量的关键策略  AI写作工具检测:学生如何避免学术不端行为  找不到百度AI助手入口 最新官网登录入口  如何使用 DeepSeek API 构建低成本智能应用  百度AI助手入口在哪 怎么找到聊天入口  AI聊天机器人引发伦理思考:泰国老人在Facebook上遭遇情感欺骗悲剧  理论框架写作指南:3步构建研究基石  面试成功秘诀:如何巧妙回答常见面试问题  构建卓越AI代理:端到端Agentic RAG解决方案详解  Feelin网页版在线入口 Feelin官方网站导航  Claude怎么用_Claude使用方法详细指南【教程】  AI工具投资指南:10个关键要素,助您明智决策  Xcode 26 Beta 新功能:集成 ChatGPT 代码助手全面测评 

 2025-08-01

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.