尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

PaddleHub 梵文 OCR 实战:devanagari_ocr_db_crnn_mobile 轻量级文字识别模块详解

发布时间:2026/9/24 15:20:06

资讯中心
01
ARTICLE

PaddleHub 梵文 OCR 实战:devanagari_ocr_db_crnn_mobile 轻量级文字识别模块详解

PaddleHub 梵文 OCR 实战:devanagari_ocr_db_crnn_mobile 轻量级文字识别模块详解
人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载本指南围绕 PaddleHub 图像-文字识别模块devanagari_ocr_db_crnn_mobile展开系统讲解该模块的模型构成DB 文本检测 CRNN 序列识别、安装方式、命令行与 Python API 两种预测路径、结果数据结构以及 PaddleHub Serving 在线服务部署。读完本文你将掌握如何在 PaddlePaddle/PaddleHub 环境中快速对印地文、马拉地文、尼泊尔文等十种梵文体系文字进行端到端识别并能依据源码理解各参数的实际作用与调用链路。一、模块基本信息与适用场景devanagari_ocr_db_crnn_mobile是一个专门用于识别图片中梵文Devanagari文字的轻量级 OCR 模块其官方信息如下项目内容模型名称devanagari_ocr_db_crnn_mobile类别图像-文字识别网络Differentiable Binarization CRNN数据集icdar2015 数据集是否支持 Fine-tuning否最新更新日期2021-12-2数据指标-该模块覆盖的梵文体系语言包括印地文、马拉地文、尼泊尔文、比尔哈文、迈蒂利文、昂加文、孟加拉文、摩揭陀文、那格浦尔文、尼瓦尔文。从实现上看它并非从零训练的独立模型而是基于仓库中的多语言 OCR 模块 multi_languages_ocr_db_crnn 封装而来在 module.py 中DevanagariOCRDBCRNNMobile直接以langdevanagari加载multi_languages_ocr_db_crnn模型并通过self.model.name self.name对外统一暴露为本模块名称。因此理解本模块的关键就是理解其底层的 DB CRNN 识别流程。二、技术原理DB 文本检测与 CRNN 序列识别该模块的识别流程分两步完成文本检测基于multi_languages_ocr_db_crnn检测得到的文本框定位图片中文字所在区域文字识别在检测出的文本框中识别梵文文字识别算法采用 CRNNConvolutional Recurrent Neural Network卷积递归神经网络。从算法架构看DBDifferentiable Binarization可微二值化用于场景文本检测。它在分割网络中引入可微分的二值化操作使文本区域与背景的分割阈值可以在训练中端到端学习从而对弯曲、透视、光照不均的自然场景文本有更强的适应性。CRNN是 DCNN深度卷积神经网络与 RNN循环神经网络的组合专门用于识别图像中的序列式对象。卷积层负责提取视觉特征循环层负责建模字符序列的上下文依赖。识别阶段与CTC loss配合使用可以直接从文本词级或行级的标注中学习不需要详细的字符级标注简化了训练数据的制作成本。从源码调用链看底层的 multi_languages_ocr_db_crnn/module.py 在构造时直接实例化 PaddleOCR 引擎并将box_thresh映射到det_db_box_thresh、angle_classification_thresh映射到cls_thresh预测时调用self.engine.ocr(img, det..., rec..., cls...)完成检测、识别、方向分类三个子任务。devanagari 模块的recognize_text则是对这一流程的薄封装见 devanagari_ocr_db_crnn_mobile/module.py。三、环境依赖与模块安装1. 环境依赖使用该模块前需要满足paddlepaddle 2.0.2paddlehub 2.0.0安装方式参考 installation.rst同时模块的 requirements.txt 声明了以下运行时依赖paddleocr2.3.0.2 paddle2onnx0.9.0 shapely pyclipper其中paddleocr提供核心的 OCR 推理引擎本模块底层的PaddleOCR即来自该包paddle2onnx用于模型导出 ONNX 格式shapely与pyclipper用于文本检测框的后处理多边形计算与裁剪。2. 安装命令$ hub install devanagari_ocr_db_crnn_mobile如需指定历史版本安装$ hub install devanagari_ocr_db_crnn_mobile1.0.0安装过程中如遇环境问题可参考各平台的零基础安装指引零基础 Windows 安装 | 零基础 Linux 安装 | 零基础 MacOS 安装。四、命令行预测安装完成后可立即通过命令行完成预测。hub run是 PaddleHub 的预测命令其中 CV 类任务统一通过--input_path指定输入图片参见 PaddleHub 命令行指令。$ hub run devanagari_ocr_db_crnn_mobile --input_path /PATH/TO/IMAGE也可以显式指定检测、识别、方向分类及各阈值参数$ hub run devanagari_ocr_db_crnn_mobile --input_path /PATH/TO/IMAGE \ --det True --rec True --use_angle_cls True \ --box_thresh 0.7 --angle_classification_thresh 0.8 \ --visualization True上述命令行参数均由底层模块的arg_parser定义见 multi_languages_ocr_db_crnn/module.py各参数含义与默认值如下参数类型默认值说明--input_pathstr必填待识别图片路径--use_gpuboolFalse是否使用 GPU 推理--output_dirstrocr_result结果保存目录--visualizationboolFalse是否将结果保存为图片--detboolTrue是否开启文字检测--recboolTrue是否开启文字识别--use_angle_clsboolFalse是否开启方向分类器--enable_mkldnnboolFalse是否启用 MKL-DNN 加速仅 CPU 有效--box_threshfloat0.6检测文本框置信度阈值--angle_classification_threshfloat0.9文本方向分类置信度阈值五、Python API 预测1. 预测代码示例import paddlehub as hub import cv2 ocr hub.Module(namedevanagari_ocr_db_crnn_mobile, enable_mkldnnTrue) # mkldnn 加速仅在 CPU 下有效 result ocr.recognize_text(images[cv2.imread(/PATH/TO/IMAGE)]) # 或使用图片路径作为输入 # result ocr.recognize_text(paths[/PATH/TO/IMAGE])2. 构造参数def __init__(self, detTrue, recTrue, use_angle_clsFalse, enable_mkldnnFalse, use_gpuFalse, box_thresh0.6, angle_classification_thresh0.9)构造DevanagariOCRDBCRNNMobile对象各参数说明参数类型默认值说明detboolTrue是否开启文字检测recboolTrue是否开启文字识别use_angle_clsboolFalse是否开启方向分类器用于识别 180 度旋转的文字enable_mkldnnboolFalse是否开启 MKL-DNN 加速 CPU 计算该参数仅在 CPU 运行下有效use_gpuboolFalse是否使用 GPU若使用 GPU请先设置CUDA_VISIBLE_DEVICES环境变量box_threshfloat0.6检测文本框置信度的阈值angle_classification_threshfloat0.9文本方向分类置信度的阈值需要注意的是这些参数会原样透传给底层的多语言 OCR 引擎use_angle_cls会同时作为方向分类器的开关与engine.ocr的cls参数box_thresh被映射为检测框阈值det_db_box_thresh见 multi_languages_ocr_db_crnn/module.py。3. 预测 API 与返回结构def recognize_text(images[], paths[], output_dirocr_result, visualizationFalse)预测 API检测输入图片中所有文本的位置并识别文本内容。参数参数类型默认值说明pathslist[str][]图片路径列表imageslist[numpy.ndarray][]图片数据列表每个 ndarray 的 shape 为 [H, W, C]BGR 格式output_dirstrocr_result结果图片的保存目录visualizationboolFalse是否将识别结果保存为图片文件仅检测开启时有效关于输入校验的细节底层recognize_text要求images与paths二选一若同时传入或都不传会抛出TypeError(The input data is inconsistent with expectations.)且输入图片为空时也会触发断言见 multi_languages_ocr_db_crnn/module.py。当paths传入时图片由read_images读取文件不存在或读取失败返回 None的条目会被过滤或置空结果见 utils.py。返回值reslist[dict]识别结果列表每个元素为 dict字段如下datalist[dict]识别文本结果列表每个元素为 dicttextstr识别得到的文本confidencefloat识别文本结果置信度text_box_positionlist文本框在原图中的像素坐标为 4×2 的矩阵依次表示文本框左下、右下、右上、左上顶点的坐标如无识别结果则data为[]orientationstr分类的方向仅在只有方向分类开启时输出scorefloat分类的得分仅在只有方向分类开启时输出save_pathstr, optional识别结果的保存路径如不保存图片则为。从源码可以看出返回结果的组装与det/rec/use_angle_cls的组合密切相关检测识别全开时输出text、confidence、text_box_position仅检测时只输出text_box_position仅方向分类时输出orientation与score见 multi_languages_ocr_db_crnn/module.py。六、结果可视化与字体支持当visualizationTrue且检测开启时模块会把检测框、识别文本与置信度绘制到原图上并保存。绘制逻辑位于 utils.py通过paddleocr.draw_ocr绘制保存文件命名为ndarray_时间戳.jpg/.png四通道图存为 png否则存为 jpg。对于不同语言可视化需要对应的字体文件。仓库中 multi_languages_ocr_db_crnn/assets/fonts 提供了多语言字体其中与梵文体系相关的包括hindi.ttf、marathi.ttf、nepali.ttf等供绘制识别结果时正确渲染天城体文字。语言与字体的映射关系在utils.py的lang_fonts字典中维护例如hi: hindi、ne: nepali。七、服务化部署PaddleHub ServingPaddleHub Serving 可将该模块一键部署为在线 HTTP 服务。第一步启动 PaddleHub Serving$ hub serving start -m devanagari_ocr_db_crnn_mobile启动完成后即获得一个 OCR 服务化 API默认端口号为8866。NOTE如使用 GPU 预测需要在启动服务之前设置CUDA_VISIBLE_DEVICES环境变量否则无需设置。第二步发送预测请求服务端就绪后通过以下代码即可发送预测请求并获取结果import requests import json import cv2 import base64 def cv2_to_base64(image): data cv2.imencode(.jpg, image)[1] return base64.b64encode(data.tostring()).decode(utf8) # 发送 HTTP 请求 data {images: [cv2_to_base64(cv2.imread(/PATH/TO/IMAGE))]} headers {Content-type: application/json} url http://127.0.0.1:8866/predict/devanagari_ocr_db_crnn_mobile r requests.post(urlurl, headersheaders, datajson.dumps(data)) # 打印预测结果 print(r.json()[results])服务端通过模块中标注serving的serving_method处理请求见 devanagari_ocr_db_crnn_mobile/module.py将 JSON 中的 base64 图片解码为 cv2 图像后转交recognize_text完成推理。更多服务化用法可参考 PaddleHub Serving 教程。八、模型导出ONNX除预测外模块还支持将底层检测、识别、方向分类三个推理模型导出为 ONNX 格式见 devanagari_ocr_db_crnn_mobile/module.pyocr.export_onnx_model(dirnameonnx_models, input_shape_dict{x: [-1, 3, -1, -1]}, opset_version10)底层实现要求paddle2onnx0.9.0且opset_version需大于 9导出的文件按{模块名}_{det|rec|cls}.onnx命名见 multi_languages_ocr_db_crnn/module.py。九、版本与更新历史版本说明1.0.0初始发布如需安装指定版本$ hub install devanagari_ocr_db_crnn_mobile1.0.0十、小结devanagari_ocr_db_crnn_mobile以 DB 文本检测 CRNN 序列识别为核心基于 PaddleOCR 的多语言引擎为天城体文字提供了轻量、即装即用的 OCR 能力安装一个 hub 模块、一行命令即可完成梵文图片的文字识别Python API 提供检测、识别、方向分类的可组合开关与阈值控制PaddleHub Serving 则让模型可以快速对外提供 HTTP 推理服务。对于需要批量处理印地文、尼泊尔文等南亚语言文档数字化、街景文字提取的场景该模块是一个可直接落地的方案。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐PaddleHub 文字识别OCR模型库实战指南从超轻量中英文识别到多语言部署PaddleHub 文字识别OCR模型库实战指南从超轻量中英文识别到多语言部署 导读 本文以 PaddleFormers 仓库中 modules/imag人工智能大模型微调模型推理服务PaddleHub 斯拉夫文 OCR 轻量级识别模型 cyrillic_ocr_db_crnn_mobile 使用指南PaddleHub 斯拉夫文 OCR 轻量级识别模型 cyrillic_ocr_db_crnn_mobile 使用指南 本篇技术指南以 PaddleFormer人工智能大模型微调模型推理服务超轻量级中文OCR4.7M模型实现任意场景文字识别超轻量级中文OCR4.7M模型实现任意场景文字识别 chineseocr_lite是一款超轻量级中文OCR识别工具总模型仅4.7M支持竖排文字识别和任意方人工智能计算机视觉深度学习OCR上一篇网页设计转换效率翻倍这款Chrome扩展让你5分钟搞定Figma文件下一篇GoodbyeDPI启动失败修复WinDivert驱动报错快速定位指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。