OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。
OCR也可简单地称为文字识别,是文字自动输入的一种方法。它通过扫描和摄像等光学输入方式获取纸张上的文字图像信息,利用各种模式识别算法分析文字形态特征,判断出汉字的标准编码,并按通用格式存储在文本文件中,所以,OCR是一种非常快捷、省力的文字输入方式,也是在文字量比较大的今天,很受人们欢迎的一种输入方式。
总结起来就是一句话,将图像的文字转化成为字符。
在 Total Control的设备控制接口中,我们提供了一些文字识别的接口,用户可以通过Total Control 提供的接口获取整个手机屏幕的文字,也可以获取手机屏幕上指定范围的文字。这样快捷的文字输入方式,会给用户带来很多方便。
在 Total Control的接口中,我们针对百度和Google 的OCR分别提供了文字识别接口。
Tesseract,一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。Tesseract不能识别手写,而且只能识别一共大约64中字体的文本。
Tesseract 是目前公认最优秀、最精确的开源 OCR 系统。 除了极高的精确度,Tesseract 也具有很高的灵活性。它可以通过训练识别出任何字体,也可以识别出任何 Unicode 字符。
如何使用Google OCR接口
1.下载语言库
下载地址:https://github.com/tesseract-ocr/tessdata ,默认自带的是英语 ,根据自己的需求选择所要的语言库,在这里我们选择的是简体中文所以选择的库是:chi_sim.traineddata。
2.上传traineddata文件
用设备接口uploadTessData(fileName)上传traineddata文件,注意,上传文件时手机是和Total Control连接的。例如:
var ret = device.uploadTessData("E:\\data\\eng.traineddata"); //上传eng.traineddata文件
3.解析手机屏幕上指定范围的文字
利用设备接口analyzeText(x1, y1, x2, y2, lang, mode) 解析手机屏幕上指定范围的文字,其返回值就是解析到的文字,例如:
var text = device.analyzeText(60,500,476,621,"eng","singleline"); print("text: " + text);
analyzeText接口的参数:
获取屏幕上指定区域坐标(261,608,433,656)的文字,屏幕显示为下图:
//获取当前设备对象 var device = Device.getMain(); // 上传traineddata文件 var ret = device.uploadTessData("E:\\sigmaTC\\产品20180611\\orc\\chi_sim.traineddata"); //这里的路径为traineddata文件在当前PC上的存储位置。 if(ret == true) { var text = device.analyzeText(261,608,433,656,"chi_sim","singleline");//用"singleline"模式搜索文字 print("获取到的文字是 : " + text); }
运行结果:
获取到的文字是 : 没有会话信息