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



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

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

搜索地址(意大利地址(: "Piazza Santa Rita 43, 10390, 都灵(TO(

扫描文档中的地址可能如下所示: "都灵,P.zza S.Rita 43,10390,都灵" 或 "Pizza S.Rita 43, 10390, 都灵" 等等

我正在寻找一种方法来查找要搜索的数据之间的"相似性",这样如果我找到接近 80% 的文本,我认为它是有效的文档

除了地址的输入方式之外,出现的另一个问题是扫描的文档可能(大多数时候(质量很差,因此OCR引擎可能会误解某些字符,从而产生不好的结果(例如"c"变成了"o","3"变成了"B",等等......所以我也想考虑到这一点。

例如,扫描的文档可能导致"Plzza S.Rita 4B, 1O390, Tcrinc">

关于如何解决这个问题的任何建议?

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

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

像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")

最新更新