首页 > 编程语言 >C#通过Spire.OCR读取图片文字

C#通过Spire.OCR读取图片文字

时间:2023-05-05 14:45:43浏览次数:36  
标签:txt 读取 C# text Spire Text fileDialog OCR

1、项目属性修改

首先创建一个winform窗体程序,然后将其目标平台属性修改为【×64】,【Spire.OCR】只支持【×64】,所以这一步不能少

  2、添加引用

通过管理Nuget包实现添加引用步骤

 3、包安装完成后将包中dll复制到项目文件夹>bin>Debug目录下

 

4、代码中实现选择图片并提取文字效果实现

/// <summary>
        /// 图片文字提取
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_PicWordsExtract_Click(object sender, EventArgs e)
        {
            try
            {
                //选择图片
                OpenFileDialog fileDialog = new OpenFileDialog();
                fileDialog.Multiselect = false;
                fileDialog.DefaultExt = "*.jpg";
                fileDialog.Filter = "图片|*.jpg";
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {
                    if (fileDialog.FileNames != null && fileDialog.FileNames.Any())
                    {
                        foreach (var file in fileDialog.FileNames)
                        {
                            Spire.OCR.OcrScanner ocr = new Spire.OCR.OcrScanner();
                            //将图片地址添加到OCR程序并运行
                            ocr.Scan(file);
                            //读取图片文字
                            string text = ocr.Text.ToString();
                            if (!string.IsNullOrWhiteSpace(text))
                            {
                                //由于版本问题所以提取出的文字后会附加上【Evaluation Warning : The version can be used only for evaluation purpose...】
                                //这里需要替换掉这句话
                                text = text.Replace("Evaluation Warning : The version can be used only for evaluation purpose...", "");
                                //将读取结果赋值
                                txt_WordsExtract.Text = text;
                                //保存扫描获取的文字为.txt文档
                                System.IO.File.WriteAllText("C:\\Users\\Administrator\\Desktop\\新建文本文档.txt", text);
                                System.Diagnostics.Process.Start("C:\\Users\\Administrator\\Desktop\\新建文本文档.txt");
                            }
                            else
                            {
                                txt_WordsExtract.Text = "读取失败";
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                txt_WordsExtract.Text = "读取失败:" + ex.Message;
            }
        }
View Code

 

5、界面调用

 try
            {
                //选择图片
                OpenFileDialog fileDialog = new OpenFileDialog();
                fileDialog.Multiselect = false;
                fileDialog.DefaultExt = "*.jpg";
                fileDialog.Filter = "图片|*.jpg";
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {
                    if (fileDialog.FileNames != null && fileDialog.FileNames.Any())
                    {
                        foreach (var file in fileDialog.FileNames)
                        {
                            Spire.OCR.OcrScanner ocr = new Spire.OCR.OcrScanner();
                            //将图片地址添加到OCR程序并运行
                            ocr.Scan(file);
                            //读取图片文字
                            string text = ocr.Text.ToString();
                            if (!string.IsNullOrWhiteSpace(text))
                            {
                                //由于版本问题所以提取出的文字后会附加上【Evaluation Warning : The version can be used only for evaluation purpose...】
                                //我这里只是测试使用一下所以就没特地去找免费版dll,只是替换掉版本问题这句话
                                //如需在实际项目中使用可以找一下,或者自行购买正版
                                text = text.Replace("Evaluation Warning : The version can be used only for evaluation purpose...", "");
                                //将读取结果赋值
                                txt_WordsExtract.Text = text;
                                //保存扫描获取的文字为.txt文档
                                System.IO.File.WriteAllText("C:\\Users\\Administrator\\Desktop\\新建文本文档.txt", text);
                                System.Diagnostics.Process.Start("C:\\Users\\Administrator\\Desktop\\新建文本文档.txt");
                            }
                            else
                            {
                                txt_WordsExtract.Text = "读取失败";
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                txt_WordsExtract.Text = "读取失败:" + ex.Message;
            }
View Code

 

6、运行结果

 目前来说提取文字效果以达成,不过提取后一些特殊的标点符号,还是会出现错误或未提取出来的情况。

 

标签:txt,读取,C#,text,Spire,Text,fileDialog,OCR
From: https://www.cnblogs.com/lwk9527/p/17374093.html

相关文章

  • SpringMVC 超大文件上传和断点续传的实现
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传......
  • C#反射获子类所继承的父类中,属性的私有get/set方法
    这两天遇到个好玩的东西,过程是这样的:有这样的两个类,它们都被封装到同一个dll中。publicabstractclassMyClass{publicintMyProperty{get;privateset;}}publicclassMyChildClass:MyClass{publicintMyProperty2{......
  • Docker 部署 Gitea Actions
    Gitea在1.19版本正式支持了GiteaActions而运行GiteaActions的前提是注册一个跑步者(目前,actrunners是唯一的选择)。官方介绍地址:https://gitea.com/gitea/act_runner二进制下载地址:https://dl.gitea.com/act_runner/当然,二进制部署不是本文的重点1.使用Docker部署dockerru......
  • Ubuntu安装FreeSWITCH亲测
    本人在安装FreeSWITCH的时候遇到了相当多的坑,网上很多方法都模棱两可,经常装失败,最后终于装成功后做一下总结最顺利的安装方式​1.下载压缩文件​下载地址:​ ​ ​http://files.freeswitch.org/freeswitch-releases/​​​  我选择的下载版本是freeswitch-1.8.5.tar.x......
  • docker 安装 Portainer
    创建目录mkdir-p/docker/portainer/data拉取最新的Portainerdockerpullportainer/portainer-ce安装和启动dockerrun-d--restart=always--nameportainer-p8000:8000-p9443:9443-v/var/run/docker.sock:/var/run/docker.sock-v/docker/portainer/data:/dat......
  • C# iTextSharp,将多张图片合并生成PDF文件
    1、添加引用首先添加NuGet引用 2、界面实现及按钮事件///<summary>///根据图片生成PDF///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatev......
  • 6-4 【CPP0026】以点类Point及平面图形类Plane为基础设计三角形类Triangle
    6-4【CPP0026】以点类Point及平面图形类Plane为基础设计三角形类Triangle分数 10作者 C++多态编程单位 石家庄铁道大学以平面图形类Plane为基类公有派生三角形类Triangle,main(void)函数完成对其的测试。Point类结构说明: Point类的数据成员包括:①私有......
  • 在.NetCore中 DDD中基于mediatr实现领域事件并结合EFCore进行二次封装
    [源代码地址https://github.com/junkai-li/NetCoreKevin]基于NET6搭建跨平台WebApi架构支持单点登录、多缓存、自动任务、分布式、多租户、日志、授权和鉴权、网关注册与发现、CAP集成事件、领域事件、docker部署**首要要理解什么是领域事件?**领域事件是指发生在特定领域中的......
  • 【C++之类构造函数和析构函数】
    【C++之类构造函数和析构函数】类的构造函数:1.类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。2.构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回void。3.构造函数可用于为某些成员变量设置初始值。类的析构函数:1.类的析构函......
  • npm命令报错:error Unexpected token '.'; error A complete log of this run can be fo
    如果你的npm报错是这样的errorUnexpectedtoken'.'errorAcompletelogofthisruncanbefoundin:并且你你尝试过了网上各种方法不得行。那么会不会是管控版本vnm的问题呢?弄了一早上不得行;最后尝试了下nvm版本。得出结论:nvm1.1.7这个版本有问题。请升级到nvm1.1.10......