【调研报告】使用OCR的方式提高测试方获取视频的延迟数据
一、背景
- 背景:为了方便测试GoCall网络专用房间测试数据,提高测试的效率
- 目标群体:测试工程师、开发工程师
二、详细调研
2.1 测试调研
在跟测试方沟通后了解具体的测试方式:
测试方法:手机A录入在线秒表的时间,手机B拉手机A的展示时间,用手机C拍照拍下在线秒表和手机B的时间,从而算出整个的延迟时间。 一个周期获取15张手机C所拍摄的照片并通过人工的方式获取其中的时间差,再算取平均值。 |
如下图所示:
2.2 方案调研
方案处理思路如下:
- 依次读取15张图片
- 通过OCR获取图片的两处特定的时间字符
- 整理所获取到的时间字符,并计算延迟
- 输出包括每一张图片的时间字符和时间差(延迟) 以及 最终的平均值的延迟报告txt文件
总的来说,关键是通过OCR来得到延迟数据。
2.3 技术调研
市面上主流的python 的OCR 库有opencv 和 pytesseract
技术参考文献:
- https://builtin.com/data-science/python-ocr
- https://pypi.org/project/pytesseract/
- https://pypi.org/project/opencv-python/
- https://cloud.tencent.com/developer/article/1709709
- https://www.geeksforgeeks.org/how-to-extract-text-from-images-with-python/
- https://cloud.tencent.com/document/product/866/17622
2.3.1 实现效果
标准情况
- 字体常规
- 无倾斜、无杂色
以 word 和 网页文本截图为例
OCR的效果良好可以识别。
非标准情况
- 字体倾斜
- 有杂色
OCR的识别效果差,无法识别
综上所述,这两种py开源库并不能够满足业务需求。
2.3.2 解决方案
采用腾讯云的文字识别功能 :https://cloud.tencent.com/document/product/866
首先使用py的方式验证其可靠性:
效果如下:
效果很好!OCR的识别成功率的大大提高有助于后续的开展。
三、 技术设计
采用腾讯云的技术进行客户端的开发。加入拍照功能实现上述的功能流程~
PS:腾讯云的android客户端SDK目前只支持这些功能,没有常规的文本识别。
故采用javaSDK包:implementation 'com.tencentcloudapi:tencentcloud-sdk-java:3.1.322'
3.1 产品成果
3.1.1 android apk
基于腾讯云的OCR Demo 进行开发,实现了version1.0.0 的延迟测试工具(DelayTool)。
代码仓库:https://gitee.com/ChrisEighteen18/ocrtentcent-demo
[delayTool.apk]
操作限制:
- 该工具使用OCR 免费版,每月仅1000次的调用余额。
- 由于时间安排,该工具目前没有做持久化存储处理,仅展示拍下的图片当前的延迟。效果如下:
3.2.1 py脚本
https://gitee.com/ChrisEighteen18/py_handle_international_android
该脚本实现了对视频中的延迟时间的样本统计并得到一个txt报告文件。
注意在使用该py脚本前,必须保证有如下的第三方:
|
参考:
- https://pypi.org/project/opencv-python/
- https://www.askpython.com/python/examples/extract-images-from-video
- https://github.com/NatLee/HEIC2PNG
命令行使用方式如下所示:
python3 该脚本的绝对路径 需要解析的视频的绝对路径 |
最终得到如下的资源:
PS:py的默认的筛选图片样本量为30;上图中数据量为5是为了测试功能而调低的。 |
综上所述,推荐使用py脚本实现获取延迟数据。