我正在使用OCR的收据阅读应用程序,我正在建设。可以理解的是,OCR在S和A5之间存在差异。
我的应用程序可以找到餐厅收据中的每一行,通常格式如下:
1 Champagne £505.55
5 Burger with chips £25.00
2 Chips with cheese £5.00
2 Coke £1.50
1 Ketchup £0.50
5 Penny sweets £0.05目前我可以找到Int和文本罚款,我也可以得到双在结尾,但很少它包含一个5。是否有一些准则,我可以在适当的地方,以确定一个5是否已经被替换为看它的周围环境?我现在只能通过识别货币符号并替换之后出现的任何事件来假设?但有时,它很难认识到这些,或者根本就没有。任何建议或帮助都会很好。谢谢
编辑:我知道可能没有一个完美的答案,以获得强硬的价格,如or 555.55,以SSS.SS形式出现,但如果有什么更常见的价格,如0.50,10.50或5.00等,我很想听听一些建议。再次感谢
更新:
mutating func replaceWhereFivesShouldBe() {
do {
let regEx = try! NSRegularExpression(pattern: "\\s+[0-9S]+\\.[0-9S]{2}")
let range = NSMakeRange(0, self.characters.count)
self = regEx.stringByReplacingMatches(in: self, range: range, withTemplate: "5")
} catch {
return
}
}发布于 2017-03-17 14:10:05
使用regex匹配任何在to之后的文本,并将所有"S“字符替换为"5”。这假设在货币符号之后只有非阿尔法字符(特别是没有S字符)。这一准则应能发挥作用:
£[0-9S]+\.[0-9S]{2}从那里,找到你的S字符的索引,并用5替换它们。
在货币符号不存在(或检测到)的情况下,只需使用regex来标识货币金额就可以了。基于您的示例,我不希望在项目描述中找到该模式。就像这样:
\s+[0-9S]+\.[0-9S]{2}或者,如果货币符号被混淆,通配符就像:
\s+.[0-9S]+\.[0-9S]{2}https://stackoverflow.com/questions/42859445
复制相似问题