抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

记一次MD5相同导致的坑

背景:

由于业务要求,需要对图片进行编辑,同时做OCR文字识别并进行保存。在数据库中根据文件路径,MD5值进行唯一性判断,若已存在OCR识别结果则返回不再识别。

一个OCR数据包含两个path,一个为图片源路径(原始图片),一个为识别路径(用于裁剪、旋转、滤镜处理后重新进行识别,初始为原始图片路径)

流程:

从图库选择一张图片,绘制到界面,在裁剪时选择全范围,获取bitmap保存到sd卡。

获取识别结果时,通过文件路径与MD5进行判断,若已存在OCR识别结果则返回不再识别。

问题原因:

裁剪后(文件路径已变,全范围裁剪虽然是不裁剪但也进行了重新保存)再进行OCR识别时,通过MD5查询数据库中存在已有结果(与原图MD5一致),但出于效率而言,仅通过路径查询是否存在,以至于在数据库中无法获取结果。

解决办法:

在查询到具备相同MD5时,如果图片源路径相同,识别路径不同,则进行识别路径更新,下次使用识别路径查询时则可正常获取。

耗时原因:

逻辑复杂,debug 追踪太过于耗时,应精简逻辑,统一规则,少暴露接口。同时对于重新保存时文件MD5相同也是第一次遇到,图片太小了32kb,在绘制到屏幕上时和保存时均不存在损耗,导致MD5依旧一致。


0条评论

发表评论