Android 如何检查扫描的文档是否包含地址

Android 如何检查扫描的文档是否包含地址,android,firebase,ocr,string-matching,firebase-mlkit,Android,Firebase,Ocr,String Matching,Firebase Mlkit,我需要扫描文档并检查它是否包含特定数据。 简单地说,假设我需要查找扫描的发票是否包含特定地址 与文档中的书写方式相比,要搜索的给定地址可以采用不同的书写方式,例如: 搜索地址(意大利语地址):“都灵圣丽塔广场4310390号(收件人) 扫描文档中的地址可能类似于: 都灵P.zza S.丽塔4310390都灵 或 比萨S.丽塔4310390都灵 等等 我正在寻找一种在搜索数据之间找到一种“相似性”的方法,因此如果我找到一个接近的文本,比如说,80%,我认为它是一个有效的文件 除了如何键入地址外,出

我需要扫描文档并检查它是否包含特定数据。 简单地说,假设我需要查找扫描的发票是否包含特定地址

与文档中的书写方式相比,要搜索的给定地址可以采用不同的书写方式,例如:

搜索地址(意大利语地址):“都灵圣丽塔广场4310390号(收件人)

扫描文档中的地址可能类似于: 都灵P.zza S.丽塔4310390都灵 或 比萨S.丽塔4310390都灵 等等

我正在寻找一种在搜索数据之间找到一种“相似性”的方法,因此如果我找到一个接近的文本,比如说,80%,我认为它是一个有效的文件

除了如何键入地址外,出现的另一个问题是扫描的文档可能(大多数情况下)质量很差,因此OCR引擎可能会误解某些字符,导致错误结果(例如a“c”变成“o”,a“3”变成“B”,等等……所以我也要考虑到这一点

e、 g.扫描的文件可能导致“Plzza S.Rita 4B、1O390、Tcrinc”

关于如何解决这个问题有什么建议吗


实际上,我是在Android上开发的,使用OpenCV对文档图片进行桌面查看,使用Google Firebase ML-KIT在设备上扫描文档(我不能依赖外部服务,我必须在设备上解决)因此,我应该使用Java解决这个问题,并从ml工具包ocr找到的文本中查找,但即使您有在其他语言/平台中实现此功能的建议,也可以作为参考。

这确实是一个有点难的问题。我相信您最好的选择是模糊字符串匹配。
有一些Java库应该对您有所帮助,例如

extractX和sortX等功能应该很方便:

FuzzySearch.extractOne("cowboys", ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"])
(string: Dallas Cowboys, score: 90, index: 3)

你可以很容易地使用正则表达式来执行字符串匹配。我认为你低估了这个问题,这不是一个纯字符串匹配,而是字符串相似性,除了单词顺序之外,你还必须考虑错误的扫描字符,导致错误的否定。我想我应该使用混合混合算法,比如你为什么这么想?正则表达式对您不起作用?它们通常用于解决这类问题。您能给我一个在这种情况下使用正则表达式的示例吗?答案对您有用吗?我将在下周返回代码,我将尝试让您知道此库是否方便。谢谢
FuzzySearch.tokenSortPartialRatio("order words out of","  words out of order")