【发布时间】:2017-03-17 13:57:29
【问题描述】:
我正在构建的收据阅读应用程序上使用 OCR。可以理解的是,S 和 5 之间的 OCR 斗争有所不同。
我的应用会在餐厅收据中找到每一行,通常格式如下:
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 是否已被替换?我现在只能通过识别货币符号并替换之后的任何事件来假设?但有时它很难识别这些,或者根本没有。任何建议或帮助都会很棒。谢谢
编辑:我知道可能没有一个完美的答案来获得像 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
}
}
【问题讨论】: