news 2026/8/25 3:19:13

Winform基于PaddleOCR图片文字提取方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Winform基于PaddleOCR图片文字提取方法

1.目的

掌握Winform下基于Sdcb. PaddleOCR和OpenCvSharp实现图片文字的提取方法。

⒉编程软件

Visual Studio 2022

⒊界面设计

如下图设计了UI界面,包括使用Button、PictureBox和RichTextBox控件:

本案例以下图特定图片为案例进行文字提取:

⒋代码简述

⑴命名空间

usingOpenCvSharp;

usingSdcb.PaddleInference;

usingSdcb.PaddleOCR;

usingSdcb.PaddleOCR.Models;

usingSdcb.PaddleOCR.Models.Local;

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.IO;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

usingSize= OpenCvSharp.Size;

namespaceWinformGetTest

{

publicpartialclassForm1:Form

{

stringselectedPicture;//图片公共变量

publicForm1()

{

InitializeComponent();

}

…//内容代码

}

}

⑵“选择文字图片”代码

privatevoidbutton1_Click(objectsender,EventArgse)//获取图片

{

OpenFileDialogopenFileDialog =newOpenFileDialog();

openFileDialog.Filter ="Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*";

openFileDialog.FilterIndex = 1;

openFileDialog.Multiselect =false;

if(openFileDialog.ShowDialog() ==DialogResult.OK)

{

selectedPicture = openFileDialog.FileName;

Imageimage =Image.FromFile(selectedPicture);//使用Image类加载图片

pictureBox1.SizeMode =PictureBoxSizeMode.Zoom;//让PictureBox完全显示图片

pictureBox1.Image = image;//将图片显示在PictureBox中

}

else

{

MessageBox.Show("您本次没有选择任何图片!!!");

}

}

⑶“图片文字提取”代码

privatevoidbutton2_Click(objectsender,EventArgse)//图片文字提取

{

this.richTextBox1.Clear();//清空 richTextBox1 中的内容

FullOcrModelmodel =LocalFullModels.ChineseV3;//设置使用的 OCR 模型为中文版模型(v3 版本)

using(PaddleOcrAllall =newPaddleOcrAll(model,PaddleDevice.Mkldnn())//初始化 PaddleOCR 实例,使用 MKL-DNN 加速

{

AllowRotateDetection =true,//允许检测并识别有角度的文字

Enable180Classification =true,//允许识别旋转角度大于90度的文字

})

{

//读取用户选择的图片文件

using(Matsrc2 =Cv2.ImRead(selectedPicture))

using(Matpreprocessed = PreprocessImageForOcr(src2))

{

PaddleOcrResultresult = all.Run(preprocessed);//使用 OCR 对图片进行识别

stringrawText = result.Text;

stringcorrectedText = PostProcessOcrResult(rawText);//后处理校正(使用返回值)

richTextBox1.Text = correctedText;//将识别出的文本内容显示在 richTextBox1 中

}

}

}

privateMatPreprocessImageForOcr(Matsrc)//图片处理

{

try

{

Matprocessed = src.Clone();

// 1.转换为灰度图

if(processed.Channels() == 3)

{

Cv2.CvtColor(processed, processed,ColorConversionCodes.BGR2GRAY);

}

// 2.使用中值滤波,对文字边缘保护更好

Cv2.MedianBlur(processed, processed, 3);

// 3.自适应二值化(比普通阈值化效果更好)

Cv2.AdaptiveThreshold(processed, processed, 255,

AdaptiveThresholdTypes.GaussianC,

ThresholdTypes.Binary, 15, 5);

// 4.形态学操作去除噪点(先闭运算再开运算)

Matkernel =Cv2.GetStructuringElement(MorphShapes.Rect,newSize(2, 2));

Cv2.MorphologyEx(processed, processed,MorphTypes.Close, kernel);

//Cv2.MorphologyEx(processed, processed, MorphTypes.Open, kernel);

// 5.对比度增强

processed.ConvertTo(processed, -1, 1.1, 20);

returnprocessed;

}

catch(Exceptionex)

{

MessageBox.Show($"图像预处理错误:{ex.Message}");

returnsrc.Clone();

}

}

privatestringPostProcessOcrResult(stringrawText)// OCR结果后处理校正

{

varcorrections =newDictionary<string,string>//常见错别字和语法错误校正

{

{ "兰动化综", "自动化综" },

};

stringresult = rawText;

foreach(varcorrectionincorrections)

{

result = result.Replace(correction.Key, correction.Value);

}

returnresult;

}

在进行图片处理时,参数调整对比优化:

此外,对OCR结果后进行提取校正。

⒌测试

如下图,针对上述图片提取文字进行测试,分别为不校正和校正后的文字提取效果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 3:17:55

日常工作问题总结

1. 标点符号不规范&#xff0c;如使用引号统一使用双引号&#xff0c;去掉不必要空格&#xff0c;js句尾使用&#xff1b; 2. 定义变量时注意使用var、let、const&#xff1b; 3. 语句过长时换行&#xff1b; 4. 复杂的ajax请求&#xff1a; $.ajax({url: /api/open/comment/g…

作者头像 李华
网站建设 2026/8/25 3:17:03

C#毕业设计——基于C#+asp.net+SQL server的办公自动化管理系统设计与实现(毕业论文+程序源码)——办公自动化管理系统

基于C#asp.netSQL server的办公自动化管理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于C#asp.netSQL server的办公自动化管理系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PP…

作者头像 李华
网站建设 2026/8/25 3:14:52

asp毕业设计—— 基于asp+access的实验室设备管理系统设计与实现(毕业论文+程序源码)——实验室设备管理系统

基于aspaccess的实验室设备管理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于aspaccess的实验室设备管理系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模…

作者头像 李华
网站建设 2026/8/25 3:17:02

asp毕业设计——基于asp+access的网上投票系统设计与实现(毕业论文+程序源码)——网上投票系统

基于aspaccess的网上投票系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于aspaccess的网上投票系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴…

作者头像 李华
网站建设 2026/7/14 16:51:36

网卡驱动死机调试经验案例

一、现象 执行iperf打流后&#xff0c;不管是udp打流还是tcp打流&#xff0c;命令行没有响应&#xff0c;无法敲入任何字符&#xff0c;也没有回显&#xff0c;但一段时间后&#xff0c;串口有打印&#xff0c;查看代码后&#xff0c;发现是EMAC的DMA中断里打印的&#xff0c;打…

作者头像 李华