【Win10 应用开发】OCR识别

原文:【Win10 应用开发】OCR识别

OCR,即Optical Character Recognition,光学字符识别。以下介绍来自搜索:

OCR(Optical Character
Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent
Character
Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。

简单地说吧,就是识别印刷品上面的文字,大概用得比较多的情况是:用设备的摄像头拍一张照片,照片中有文字,然后通过OCR技术将照片中的字符识别出来,转化为字符。顺便说一下,如果想“干坏事”的话,也可以用OCR技术来识别一些简单的图片验证码,呵呵,不过,现在很多网站的验证码都比较“狡猾”,要准确识别出来不那么容易。

好了,接下来看看如何在UAP中使用OCR技术。

用于OCR识别的API主要在Windows.Media.Ocr命名空间下。用法如下:

1、调用IsLanguageSupported静态方法检查一下,是否支持某种语言文字的识别,如繁体中文、简体中文等(估计它识别不了甲骨文和篆书)。

2、调用OcrEngine.TryCreateFromLanguage方法从指定的语言创建OcrEngine实例;或者调用TryCreateFromUserProfileLanguages方法从用户配置的语言中创建。这些方法都是静态的,可直接访问。

3、调用OcrEngine实例的RecognizeAsync方法开始进行识别,识别完成后会异步返回OcrResult对象,其中对象中的Text属性就是被识别出来的文本。RecognizeAsync方法需要一个Windows.Graphics.Imaging.SoftwareBitmap实例作为参数,它通过BitmapDecoder类来获取,就是要进行识别的图片。

下面就用一个示例来演示一下。该例可以选择一张带文字的图片,然后识别出图中的文本。代码如下:

            FileOpenPicker picker = new FileOpenPicker();
            picker.FileTypeFilter.Add(".jpg");
            picker.FileTypeFilter.Add(".jpeg");
            // 选择文件
            StorageFile imgFile = await picker.PickSingleFileAsync();

            if(imgFile != null)
            {
                using (IRandomAccessStream inStream = await imgFile.OpenReadAsync())
                {
                    // 显示图片
                    BitmapImage bmp = new BitmapImage();
                    bmp.DecodePixelWidth = 700;
                    bmp.SetSource(inStream.CloneStream());
                    this.img.Source = bmp;
                    // 解码图片
                    BitmapDecoder decoder = await BitmapDecoder.CreateAsync(BitmapDecoder.JpegDecoderId, inStream);
                    // 获取图像
                    SoftwareBitmap swbmp = await decoder.GetSoftwareBitmapAsync();
                    // 准备识别
                    Windows.Globalization.Language lang = new Windows.Globalization.Language("zh-CN");
                    // 判断是否支持简体中文识别
                    if (OcrEngine.IsLanguageSupported(lang))
                    {
                        OcrEngine engine = OcrEngine.TryCreateFromLanguage(lang);
                        if (engine != null)
                        {
                            OcrResult result = await engine.RecognizeAsync(swbmp);
                            if (result != null)
                            {
                                tbResult.Text = result.Text;
                            }
                        }
                    }
                    else
                    {
                        Windows.UI.Popups.MessageDialog dialog = new Windows.UI.Popups.MessageDialog("不支持简体中文的识别。");
                        await dialog.ShowAsync();
                    }
                }
            }

目前是支持简体中文字符的识别,不过准确率还不能达到100%,97%的准确应该可以保证的。看看识别的结果:

从上面的结果来看,“儿”、“子”、“几”三字没有正确识别,准确率还过得去。

示例源码下载:http://files.cnblogs.com/files/tcjiaan/OcrApp.zip

好,本次就扯到这里,改天有空再吹。

时间: 2024-10-11 11:11:13

【Win10 应用开发】OCR识别的相关文章

【Win10 应用开发】人脸识别

原文:[Win10 应用开发]人脸识别 可能你会认为人脸识别用起来会很复杂,老周当初也这么想,但通过实际操作后,我发现非然. 经过微软封装的东西,向来都是复杂问题简单化,只要用得舒心,代码越少越好,用最少的代码做最多的事情,此为大师境界也. 好,屁话不说,先介绍一下如何完成人脸识别(或者叫人脸检测,随你怎么翻译,反正知道是怎么一回事就行).核心的类是FaceDetector,不要问我这个类在哪里,自己打开对象浏览器搜索. 第一步,访问静态属性IsSupported,看看当前平台是不是支持人脸识别

Python - 开发截图识别OCR小工具

一.简介 你一定用过那种“OCR神器”,可以把图片中的文字提取出来,极大的提高工作效率. 今天,我们就来做一款实时截图识别的小工具.顾名思义,运行程序时,可以实时把你截出来的图片中的文字识别出来. 二.模块 import keyboard # 用于监控键盘按下,触发事件(pip install keyboard) import time from aip import AipOcr # 调用百度接口(pip install baidu-aip) from PIL import ImageGrab

车牌OCR识别的流程,手机车牌识别

车牌的OCR识别的流程如下: 手机车牌识别背景 随着人们生活水平的提高,汽车方面的业务量也日益暴涨,加上如今"互联网+"的提出,智能终端(智能手机及平板电脑)及移动通信(4G)发展迅速,人们用手机的频率比用电脑的多,加上手机小巧轻便,成为生活中必要的工作及社交工具,可以预见未来几年60%以上的业务将会逐渐转移到智能终端系统上来.伴随着移动端APP的火爆应用,易泊将原来应用在电脑端的车牌识别技术转移到了移动端,手机车牌识别更加灵活,方便,为人们的应用解决了很多实际困难. 手机车牌识别描述

使用ABBYY FlexiCapture Engine SDK开发OCR应用的心得分享

介绍 几周前,我在空闲时间使用泰比公司(ABBYY)的FlexiCapture Engine试用版创建了一些简单的OCR应用.FlexiCapture Engine是一款用于创建数据捕捉应用的SDK,能够打开图像.PDF文件及扫描文件,对有价值的数据及字段进行分类及提取.提取的数据可导出至Excel.XML.CSV.PDF 格式文件,也可以导出至外部数据库.DMS及ECM系统. 开始创建 在已经装有开发工具(如MS Visual Studio)的电脑上安装SDK,之后SDK会出现10多种示例应用

百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。

百度为何开源深度机器学习平台? 有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举. 5月20日,百度在github上开源了其深度机器学习平台.此番发布的深度机器学习开源平台属于"深盟"的开源组织,其核心开发者来自百度深度学习研究院(IDL),微软亚洲研究院.华盛顿大学.纽约大学.香港科技大学,卡耐基·梅陇大学等知名公司和高校. 通过这一开源平台,世界各地的开发者们可以免费获得更优质和更容易使用的分布式机器学习算法源码,

Tesseract OCR集成Android Studio实现OCR识别

Tesseract OCR集成Android Studio实现OCR识别 介绍 Tesseract OCR谷歌开源的OCR识别引擎,支持多国文字包括中文简体与繁体.最新的版本是3.x.可以通过安装程序安装在机器上然后通过命令行运行该程序识别各种图片中的文字.同时还提供二次开发包,支持二次开发包括C.C++语言.也可以被移植到Android平台实现移动应用领域的OCR识别APP. 下载 在Android平台上使用Tesseract OCR首先要下载Tess2工程,它是专门针对Android平台编译

【Win10 应用开发】集成语音命令

原文:[Win10 应用开发]集成语音命令 记得老周以前在写WP8应用开发的文章时,曾经写过语音命令集成的文章,后来8.1的时候“小娜”问世,但考虑到其变化不大,故老周没有补写相应的文章. 今天,老周打算补一下Win 10通用应用开发中,有关语音命令集成相关的内容.虽然还是一脉相承,大的变化没有,不过Win10 sdk在语音命令定义文件中添加了新内容,而且现在不仅能在手机应用中加入语音集成,在面向PC和板子的应用中也能如愿,因为应用程序已经通用. 同理,在开始之前,老周仍然先给大家讲个故事. 话

OCR识别-python版(一)

需求:识别图片中的文字信息环境:windows系统 开发语言:python 使用工具类:1.pyocr 2.PIL 3.tesseract-ocr 步骤: 1.pyocr 网络通直接使用命令:pip install pyocr 网络不通,转至https://pypi.python.org/pypi/pyocr/0.4.1下载安装 2.安装pil网络通直接使用命令:pip install PIL 网络不通,转至http://www.pythonware.com/products/pil/index

汽车Vin码识别——可以嵌入到手机里的新OCR识别技术

汽车Vin码识别(车架号识别),顾名思义,就是识别汽车的Vin码(车架号),汽车Vin码识别(车架号识别)利用的是OCR识别技术,支持视频流获取图像,自动触发识别,另外汽车Vin码识别(车架号识别)sdk支持安卓和ios主流操作平台.便于集成.以汽车维修店为例,以前车相对少,都是人为的抄录下汽车Vin码(车架号)来做记录,不仅慢,还容易出错,比如弄错一位数字,有可能导致解析的发动机型号不正确,那么就会直接影响到维修的正确性和维修进度.因此,北京易泊时代科技有限公司结合汽车Vin码(车架号)主机厂