专栏首页测试一般不一般测试从0到1OCR初探培训(九)

测试从0到1OCR初探培训(九)

又来到了测试网络会议的第九期培训,本期的主讲人皮卡丘,培训的是关于OCR-tesseract 使用,话不多说详情如下:

背景:

APP内有许多瞬时弹窗,和一些图片,其中一个功能验证点是如何验证其文案是否正确(如限购标签),单纯的用appium-inspector是不能对其进行定位的,那么在执行UI自动化时,如何对其进行校验呢?

思路:

Java中开源的tesseract(Tesseract 是一个 OCR 库,光学字符识别(Optical Character Recognition, OCR),也叫文字识别,可以处理很多自然语言,比如中、英文等)

Mac下的环境配置:

安装tesseract

brew install tesseract

查看本地存在的语言库(按照上述命令安装后的语言包里默认有eng英文包)

tesseract --list-langs

简体中文(chi_sim.traineddata)语言包下载地址(注意下载的语言包要和你的tesseract版本相对应):https://tesseract-ocr.github.io/tessdoc/Data-Files

实际应用:

在商品详情页里的加入常买时,断言是否有“已加入我常买”的瞬时文字弹窗出现。

直接识别:

因为此时要识别的内容是汉字,所以用简体中文语言包。其中-l chi_sim 表示用简体中文字库

tesseract 我常买弹窗.jpeg 我常买弹窗 -l chi_sim

识别结果如下:

从上图的识别结果可以看出,没能识别出期待断言的文字,即“已加入我常买”。

如何提高识别率(官网上的一些思路:https://tesseract-ocr.github.io/tessdoc/ImproveQuality

1、Rescaling(尺度化)

可应用到实际业务中

首先在直接用上述命令识别图片里的内容时,遇到下面这样一个提示:Warning: Invalid resolution 0 dpi. Using 70 instead.

Tesseract对于dpi >= 300的图片有更好的识别效果。所以在识别之前将图片调整到合适的尺寸有助于提高识别效果。(DPI:Dots Per Inch,每英寸点数,图像每英寸长度内的像素点数)

tesseract 我常买弹窗_300dpi.jpeg 我常买弹窗_300dpi -l chi_sim

2、Binarisation(二值化)

可应用到实际业务中

在这里先用Python里的opencv对其二值化(将整个图像呈现出明显的黑白效果的过程),然后用tesseract来识别的

tesseract 我常买弹窗_gray_scale.png 我常买弹窗_gray_scale -l chi_sim

从上图的对比中可以看到经过二值处理后的图片识别出来的结果变多

3、Noise Removal(去噪)

噪声是图像亮度或颜色的随机变化,会使图像的文本更难阅读。在二值化步骤中,某些类型的噪声无法通过镶嵌消除,这可能导致准确率下降。

但是在APP内的截图基本都没噪声,采用对APP内的图片去噪的方式来提高识别率基本没效果。

4、Dilation and Erosion(膨胀与腐蚀)

粗体字符或细字符(特别是带有衬线的字符)可能会影响对细节的识别,并降低识别精度。许多图像处理程序允许在一个共同的背景下对字符的边缘进行膨胀和侵蚀,从而使字符的大小(膨胀)或缩小(侵蚀)。历史文献中大量的墨水流失可以用腐蚀技术来弥补。侵蚀可以用来缩小字符的正常字形结构。

膨胀:将图像的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大,线条变细

腐蚀:将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小,线条变粗

但是在APP内截图中的文字没上面这种情形,采用对APP内的图片图像膨胀与腐蚀的方式来提高识别率基本没效果。

通过tesseract用以上两种图像预处理的方法对图片处理后识别的结果也不理想,不能识别出期待的内容:已加入我常买

5、Rotation / Deskewing(旋转/反旋转)

歪斜图像是指页面扫描不直的情况。如果页面倾斜过大,则Tesseract的行分割质量会显著降低,严重影响OCR的质量。若要解决此问题,请旋转页面图像,使文本行水平。

可以针对倾斜文字提高识别率

但是在APP内的截图里的文字基本都没倾斜,采用对APP内的图片旋转/反旋转的方式来提高识别率基本没效果。

6、Borders(边框)

Scanning border Removal(删除扫描边框)

扫描的页面周围通常有深色边框。这些字符可能会被错误地选作额外字符,尤其是在形状和层次不同的情况下。

但是在APP内的截图里基本都没深色边框,采用对APP内的图片删除扫描边框的方式来提高识别率基本没效果。

前面这六种都是官网上有的

7、图片切割

下图是对原图切割后的图片

tesseract 我常买弹窗_small.png 我常买弹窗_small -l chi_sim

识别结果如下:

如果想得到识别出来的内容在待识别图片上的坐标的话,可以加hocr参数(html文件)

tesseract 我常买弹窗_small.png 我常买弹窗_small -l chi_sim hocr

得到的识别结果如下:其中x_wconf 80 就是信心值了,bbox 后面的就是其相对截图左上角的坐标了

可应用到实际业务中

8、选择合适的字体库来识别

如果想识别的内容是英文的话,用英文库识别效果更佳

可应用到实际业务中

总结:

在识别APP内图片里的文字时,可先自动采用尺度化,然后根据实际情形结合二值化、图片切割、选择合适的字体库识别方法来提高OCR识别率。

培训后的讨论点:

1、toast的应用多么?应用场景:比如视频播放页背景不固定,识别率怎么样?

2、文字验证码效果怎么样?验证码的类型很多?Python中有这些库么?

3、APP启动速度可以用安仔的工具试下效果。

4、遍历的页面及覆盖度?安卓的Activity、手动配置遍历查询的入口

Crash一定要处理问题(一定本身有问题),Anr不一定处理(不一定是代码有问题)

5、Ui自动化的推动问题。(技术问题、时间问题)

6、一些典型的Bug:翻页导致的数据出现的重复问题

7、Monkey一天跑多少事件?跑多长时间?(30min,1小时,3小时等)

整体整整2000+字干货,没有“添油加醋”,绝对纯天然~

本文分享自微信公众号 - 测试一般不一般(TestAndTester),作者:测试安仔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android APP专项电耗监控工具使用说明

    该工具主要用来监控app的耗电数据,方便了解自己app的电量耗费情况,以及方便跟竞品进行对比~

    厦门-安仔
  • Monkey 做压力测试之余还可做内存泄露测试

    首先说3个测试内存泄露的三个动作,内存GC,退出测试app,关闭测试APP的进程的区别;

    厦门-安仔
  • 安卓app最贴地气靠谱的UI自动化工具

    1.入门门槛低,只要有懂基础的获取元素及简单的if,else逻辑关系就可,纯json格式脚本输出;

    厦门-安仔
  • 厕读:每日一题,面试无忧

    2. 下面关于java.lang.Exception类的说法正确的是() A 继承自Throwable B Serialable CD 不记...

    ImportSource
  • ​CODING 2.0:为什么我们需要 DevOps

    CODING 在前两天的 Kubecon 2019 大会上发布了 CODING 2.0。这背后是 CODING 对研发管理和研发团队组建的思考。从 CODING...

    CODING
  • SQL Server 阻止了对组件“xp_cmdshell”的 过程“sys.xp_cmdshell”的访问。。。

    今天在创建数据库的时候突然发现,xp_cmdshell的存储过程不能用了,网上一搜,发现大部分都是只关闭安全配置,然后就有了下文 ? 代码:具体的看注释,值得一...

    逸鹏
  • 论文翻译:Deep Learning on Radar Centric 3D Object Detection

    即使许多现有的3D目标检测算法主要依赖于摄像头和LiDAR,但camera和LiDAR容易受到恶劣天气和光照条件的影响。radar能够抵抗这种情况。近期研究表明...

    yzh
  • 印度查获10架大疆无人机,称威胁印安全

    据《印度时报》5月16日报道,在印度班加罗尔的坎皮高达国际机场,印度有关部门从一名乘客那里,查获了10架产自中国的大疆无人机。印度专家拉马羌德拉·古哈(Rama...

    机器人网
  • 响铃:让投资者获得安全感,兼爱大仁悟是这么做的

    在这个商业社会里,每天都在上演着各种神话般的资本故事,但却总是几家欢喜几家愁的局面。

    曾响铃
  • 今天的一些感悟

    我做事情还是喜欢追求速度,当然某种程度上速度和效率是成正比的,不全是。与效率相比,我更关注的是如何把一件事情做得更好,如果只是皮毛,那么这件事情的意义本...

    jeanron100

扫码关注云+社区

领取腾讯云代金券