当前位置:首页 » 《关于电脑》 » 正文

C# 关于 PaddleOCRSharp OCR识别的疲劳测试

11 人参与  2024年09月15日 14:02  分类 : 《关于电脑》  评论

点击全文阅读


目录

关于 PaddleOCRSharp

应用范例演示

​范例运行环境

疲劳测试

添加组件库

方法设计 

调用示例 

小结


关于 PaddleOCRSharp

PaddleOCRSharp 是百度飞桨封装的.NET版本 OCR dll 类库,OCR(Optical Character Recognition)工具可以将图像文件中的文本内容进行识别,转换成可编辑的文本格式。从而进一步进行编辑、存储和分析。

在实际的使用中,这款工具类库的确很优秀,无论从识别时间还是识别率来说,比较平衡比较令人满意。

应用范例演示

这是我们在实际应用中开发的一款工具,基于 Windows WinForm 模式,用于识别客户提供的电子档案中的文字,并进行文字识别存储及后续的管理。其主界面运行如下:

如图,工具程序在导入前提供了一些选项,包括:

(1)导入类型为图片数据和个人信息(这包括了导入文本到数据库的选项)

(2)跳过OCR识别功能,是为了直接导入图片到数据库,这里我们需要勾选掉以进行测试

(3)对已导入数据执行更新操作,这个选项是纯数据库更新操作

(4)不输出导出报告,是为了减少内存占用量,提升性能

快捷设置可以提供自动设置4个选项的目的。

工具程序提供了全目录全文件分析和单目录分析,全目录会遍历该目录下所有的电子图片进行识别操作,这里我们选择的是单目录文件分析(即选择一个目录,只查找该目录下所有的图片文件),并将最终的分析结果显示在报告框中。

在实际的运行应用中,我们的档案有共计几千万份图片,由于环境及硬件要求,仅提供了三台配置雷人的台式机,发现运行几小时后,PaddleOCRSharp.dll 运行崩溃报错,如下图:

因此需要对程序进行一些改进。

​范例运行环境

操作系统: Windows Server 2019 DataCenter

PaddleOCRSharp版本:2.2.0.0

数据库:Microsoft SQL Server 2016

.net版本: .netFramework4.0 或以上

开发工具:VS2019  C#

疲劳测试

添加组件库

打 VS2019 创建 WinForm 应用,在解决方案资源管理器中添加引用,成功后如下图:

 添加 using PaddleOCRSharp; 引用,示例如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using PaddleOCRSharp;using System.IO;using System.Collections;using System.Data.SqlClient;using System.Diagnostics;using System.Security.Cryptography;

方法设计 

首先在 WinForm (实例假设为 Form1),中初化如下变量,代码如下:

OCRModelConfig config = null;OCRParameter oCRParameter = new OCRParameter();PaddleOCREngine engi = null;OCRResult ocrResult = new OCRResult();

说明表如下: 

序号参数名类型说明
1config OCRModelConfigOCR模型的配置对象
2oCRParameter OCRParameterOCR模型的识别参数对象
3engiPaddleOCREngineOCR模型的识别引擎对象
4ocrResult OCRResultOCR模型的识别结果对象

初始化对象是疲劳测试的关键设计,如果每次都 new 一个对象,系统运行一段时间后就会崩溃。

paddleOCR方法实现对于路径图片的文字识别提取,代码如下:

string paddleOCR(string imagepath){            var imagebyte = File.ReadAllBytes(imagepath);                        oCRParameter.cpu_math_library_num_threads = 10;// 预测并发线程数            oCRParameter.enable_mkldnn = false; // web部署该值建议设置为0,否则出错,内存如果使用很大,建议该值也设置为0.            oCRParameter.cls = false; // 是否执行文字方向分类;默认false            oCRParameter.use_angle_cls = false; // 是否开启方向检测,用于检测识别180旋转            oCRParameter.det_db_score_mode = false; // 是否使用多段线,即文字区域是用多段线还是用矩形            oCRParameter.det_db_unclip_ratio = 1.6f;                        engi = new PaddleOCREngine(config, oCRParameter);            ocrResult = engi.DetectText(imagebyte);            engi.Dispose();            if (ocrResult != null)            {                return ocrResult.Text;            }                        return "";}

paddleOCR方法仅需要提供一个图片完整路径参数即可,方法中的参数对象需要说明一下,见下表:

序号参数名说明
1cpu_math_library_num_threadsCPU预测时的线程数,在机器核数充足的情况下,该值越大,预测速度越快;在我们应用里设置为10
2enable_mkldnn
           
即是否使用mkldnn库, web部署该值建议设置为false,否则出错,内存如果使用很大,建议该值也设置为false,在这里我们设置为false
3cls
           
是否执行文字方向分类,在这里我们设置为false
4use_angle_cls
           
是否开启方向检测,用于检测识别180旋转,在这里我们设置为false
5det_db_score_mode
           
是否使用多段线,即文字区域是用多段线还是用矩形,在这里我们设置为false
6det_db_unclip_ratio表示文本框的紧致程度,越小则文本框更靠近文本,在这里我们使用了默认值 1.6f

调用示例 

在Form上假设有按钮 Button1,则其点击事件的调用代码示例如下:

private void Button1_Click(object sender, EventArgs e){   OpenFileDialog ofd = new OpenFileDialog();   ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";   if (ofd.ShowDialog() != DialogResult.OK) return;   string rv2 = paddleOCR(ofd.FileName);   MessageBox.Show("共识别提取了"+rv2.Length.ToString()+"个文字\r\n"+ rv2, "识别结果");   return;}

小结

在实际的运行中,三台机器同时运行,有两台机器运行了7天以上暂无报错,一台运行了5天左右报错,唯一的区别在于报错机器的显卡配置较低,不同于其它两台机器。总体来说对于几个小时就会出错,提升了不少,也给我们监控运行状况提供了空间。

本实例是根据客户提供的电子图片类型、目录结构、JSON配置文件进行的定制开发,在实际应用我们要根据情况进行参数的设置和设计的调整,在测试中我们发现通过本实例的参数设置可以多识别出一些文字,而且识别率还是比较准确的。 

本示例代码仅供您参考,感谢您的阅读,希望本文能够对您有所帮助。


点击全文阅读


本文链接:http://zhangshiyu.com/post/160334.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 白丁儿罗佑霖(石女退婚十八次后,彩礼涨到了百万白丁儿罗佑霖结局+番外)结局_(白丁儿罗佑霖石女退婚十八次后,彩礼涨到了百万白丁儿罗佑霖结局+番外全书结局)结局列表_笔趣阁(白丁儿罗佑霖)
  • 都市第一军神萧岩林可儿完本_完本都市第一军神萧岩林可儿
  • 桃花依然笑春风宝藏美文(陆乘渊云梵音)全书免费_(陆乘渊云梵音)桃花依然笑春风宝藏美文后续(陆乘渊云梵音)
  • 宠她入骨!世子爷的追妻日常闻星落谢观澜结局+番外(闻星落谢观澜)全书免费_(闻星落谢观澜免费宠她入骨!世子爷的追妻日常闻星落谢观澜结局+番外读全书)列表_笔趣阁宠她入骨!世子爷的追妻日常闻星落谢观澜结局+番外
  • 霍沉洲此去经年人未还前言+后续沈青禾霍沉洲完本_霍沉洲此去经年人未还前言+后续(沈青禾霍沉洲)
  • 离恨覆江山全书+后续+结局(萧墨川温洛颜)免费_(离恨覆江山全书+后续+结局)萧墨川温洛颜列表_笔趣阁(萧墨川温洛颜)
  • 贫困生自称真千金,要把我这个鸠占鹊巢假千金赶出门结局+番外纯净版(方玉兰林嘉禾),贫困生自称真千金,要把我这个鸠占鹊巢假千金赶出门结局+番外纯净版
  • 穿书女配的逃出指南小说后续在线免费阅读_[牧宠]完结版免费阅读
  • 「太荒混沌鼎」后续更新_「叶无涯柳如烟」小说后续在线免费阅读
  • 全文消失的老婆(昭昭王力)列表_全文消失的老婆
  • (番外)+(全书)爱占便宜的表嫂全书+后续+结局(谢一瑶袁博文)_爱占便宜的表嫂全书+后续+结局列表_笔趣阁(谢一瑶袁博文)
  • 完结文沈青禾贺临渊霍沉洲前言+后续+结局列表_完结文沈青禾贺临渊霍沉洲前言+后续+结局

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1