ios - 使用 OCR 识别 double 或 S 中的数字 5

标签 ios regex swift ocr

我正在构建的收据阅读应用程序上使用 OCR。可以理解的是,OCR 在 S 和 5 之间存在差异。

我的应用程序在餐厅收据中找到通常格式如下的每一行:

 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 和文本,我也可以在末尾找到 double,但如果它包含 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
    }

}

最佳答案

使用正则表达式匹配行中 £ 之后的任何文本,并将所有“S”字符替换为“5”。这假设您在货币符号后只会有非字母字符(特别是没有 S 字符)。这个正则表达式应该工作:

£[0-9S]+\.[0-9S]{2}

从那里找到 S 字符的索引并将它们替换为 5。

如果货币符号不存在(或未检测到),只需使用正则表达式来识别货币金额就可以了。根据您的示例,我不希望在项目描述中找到该模式。像这样:

\s+[0-9S]+\.[0-9S]{2}

或者如果货币符号是乱码,通配符如下:

\s+.[0-9S]+\.[0-9S]{2}

关于ios - 使用 OCR 识别 double 或 S 中的数字 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859445/

相关文章:

php - 匹配字符串中空格后的位数

ios - 图表/Swift 3.0 - fatal error : Index out of range

SwiftUI:在输入前将 TextField 大小扩展到字体大小

ios - 词法或预处理器问题。 - "File not found."

iphone - 当值为空和某个数字时如何在标签中显示字符串值

c# - 了解 CultureInvariant 和 IgnoreCase 在 [A-Za-z] 上的后果

java - 如何制作将行分成单词的正则表达式

ios - 根据正则表达式,电子邮件验证是错误的

ios - 如何在 UITableViewController 中隐藏键盘?

ios - 如何最大限度地减少将 html 转换为 NSAttributedString 的时间