如何在Swift 3.0中从字符串中提取单词(英语)和名称?

加里·萨博

我使用的图像处理API会读取图像上的文本,然后从返回的字符串数据中提取英语或词典中的单词以及常用的姓和名。换句话说,我在字符串中得到了我需要的文本,但在结果中还需要过滤掉一些垃圾(非单词)。最好的方法是什么?我已经调查过了,NSLinguisticTagger但不是100%正确地说我在做什么,还有其他建议吗?

REGEX会在这里帮助我吗?我不知道如何为仅与单词匹配的模式形成语法?

以下是我尝试从中提取单词/名称的示例字符串的2个示例:

(1)“ Pumper im CasSICI 1111 Cassu与安德鲁·韦伯斯特PUMPE im CasSICI 1111 Cassu与安德鲁·韦伯斯特”
//我需要提取:“ Pumper With Andrew Webster”

(2)“强大的Hazelwood High三部曲中的SHARON M DRAPER000kFORGEDBY FIRESWINNER SHARE M强大的Hazelwood High三部曲中的SHARON M DRAPER000k由FIRE S WINNER锻造”
//我需要提取“ Sharon Hazelwood High Draper在强大的三部曲中,由胜利者强迫”

阿德里安

我把这个类拼凑在一起,它是真实代码和伪代码的混合体。我将为名字和姓氏创建一个单例类。有关详细信息,请参见代码中的注释。这不是全部,但它应该可以解决您的大多数问题。

更新cleanUpString使用switch语句调整了该方法。

更新2添加了此功能以照顾所有UITextChecker想要的东西...

return UIReferenceLibraryViewController.dictionaryHasDefinition(forTerm: self)

无论您从何处获取OCR文本,都可以像这样使用它:

let stringParser = StringParser()
let cleanedUpText = stringParser.cleanUpString(yourOCRText)

这是课程:

import UIKit // need this so UITextChecker will work
import Foundation

class StringParser: NSObject {

    // TODO: You'll need to create a singleton class for your first and last names
    // https://krakendev.io/blog/the-right-way-to-write-a-singleton

    func cleanUpString(_ inputString: String) -> String {

        // chuck stuff separated by a space into an array as an invdividual string
        let inputStringArray = inputString.characters.split(separator: " ").map(String.init)

        var outputArray = [String]()

        for word in inputStringArray {
            // Switch to check if word satisfies any of the desired conditions...if so, chuck in outputArray

            switch word {
            case _ where word.isRealWord():
                outputArray.append(word)
                break
            case _ where word.isFirstName():
                outputArray.append(word.capitalized)
                break
            case _ where word.isLastName():
                outputArray.append(word.capitalized)
                break
            default:
                break
            }
        }

        // reassemble the cleaned up words into an output array and return it as a single string
        return outputArray.joined(separator: " ")
    }
}

extension String {

    func isFirstName() -> Bool {
        let firstNameArray = ["Andrew", "Sharon"] // FIXME: this should be your singleton

        return firstNameArray.contains(self.capitalized)
    }

    func isLastName() -> Bool {
        let lastNameArray = ["Webster", "Hazelwood"] // FIXME: this should be your singleton

        return lastNameArray.contains(self.capitalized)
    }

    func isRealWord() -> Bool {
        // adapted from https://www.hackingwithswift.com/example-code/uikit/how-to-check-a-string-is-spelled-correctly-using-uitextchecker
        let checker = UITextChecker()
        let range = NSRange(location: 0, length: self.utf16.count)
        let misspelledRange = checker.rangeOfMisspelledWord(in: self, range: range, startingAt: 0, wrap: false, language: "en")

        if misspelledRange.location == NSNotFound {
            // cleans up what UITextChecker misses
            return UIReferenceLibraryViewController.dictionaryHasDefinition(forTerm: self) // returns yes if there's a definition for it
        }
        return false
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Swift 3 中从 URL 中提取字符串?

来自分类Dev

如何在python3中的'\+234'字符串中提取'\+'

来自分类Dev

在Swift中从字符串中提取整个单词

来自分类Dev

如何在swift 3中使用数组和字符串进行json

来自分类Dev

如何从字符串中提取名称和版本

来自分类Dev

如何在Swift 3中的字符串中查找字符串以过滤数据

来自分类Dev

如何从python中的字符串中提取变量名称和值

来自分类Dev

如何在Swift 3中覆盖layerClass?

来自分类Dev

如何在Swift 3中绘制LineChartData?

来自分类Dev

如何在Swift 3中获取systemLocaleCountryCode?

来自分类Dev

如何在 Swift 3 中创建 AudioQueueInputCallback?

来自分类Dev

如何在 Swift 3 中旋转屏幕?

来自分类Dev

如何在 Swift 3 中刷新视图

来自分类Dev

如何在ruby中提取字符串中单词的首字母而不循环?

来自分类Dev

如何从像“1823917+3”这样的字符串中提取整数/浮点数和符号?

来自分类Dev

如何在Swift中检查3个字符串是否相等?

来自分类Dev

如何在macOS上的Swift3中获取字符串的长度

来自分类Dev

如何在swift3中获取CNLabeledValue的本地化字符串

来自分类Dev

如何在Swift 3中使用NSSecureCoding解码字符串?

来自分类Dev

如何在swift 3中将日期字符串转换为日期

来自分类Dev

如何使用r和stringr从类似“ Airport West 1/26 Cameron St 3 br t $ 830000 S Nelson Alexander”的字符串中提取子字符串

来自分类Dev

如何从双引号中提取文本并将其添加到字符串中?蟒蛇 3.x

来自分类Dev

如何在Swift中从观察对象中提取字符串值

来自分类Dev

如何使用IndexOf和substring Java从字符串中提取多个单词?

来自分类Dev

如何使用 Python 和 re 从字符串中提取准确的单词?

来自分类Dev

如何在Google表格中列出最常用的3个单词的字符串

来自分类Dev

如何从字符串中提取最后4个单词?

来自分类Dev

如何从字符串中提取“单词形式的数字”

来自分类Dev

如何从结构化字符串中提取单词?

Related 相关文章

  1. 1

    如何在 Swift 3 中从 URL 中提取字符串?

  2. 2

    如何在python3中的'\+234'字符串中提取'\+'

  3. 3

    在Swift中从字符串中提取整个单词

  4. 4

    如何在swift 3中使用数组和字符串进行json

  5. 5

    如何从字符串中提取名称和版本

  6. 6

    如何在Swift 3中的字符串中查找字符串以过滤数据

  7. 7

    如何从python中的字符串中提取变量名称和值

  8. 8

    如何在Swift 3中覆盖layerClass?

  9. 9

    如何在Swift 3中绘制LineChartData?

  10. 10

    如何在Swift 3中获取systemLocaleCountryCode?

  11. 11

    如何在 Swift 3 中创建 AudioQueueInputCallback?

  12. 12

    如何在 Swift 3 中旋转屏幕?

  13. 13

    如何在 Swift 3 中刷新视图

  14. 14

    如何在ruby中提取字符串中单词的首字母而不循环?

  15. 15

    如何从像“1823917+3”这样的字符串中提取整数/浮点数和符号?

  16. 16

    如何在Swift中检查3个字符串是否相等?

  17. 17

    如何在macOS上的Swift3中获取字符串的长度

  18. 18

    如何在swift3中获取CNLabeledValue的本地化字符串

  19. 19

    如何在Swift 3中使用NSSecureCoding解码字符串?

  20. 20

    如何在swift 3中将日期字符串转换为日期

  21. 21

    如何使用r和stringr从类似“ Airport West 1/26 Cameron St 3 br t $ 830000 S Nelson Alexander”的字符串中提取子字符串

  22. 22

    如何从双引号中提取文本并将其添加到字符串中?蟒蛇 3.x

  23. 23

    如何在Swift中从观察对象中提取字符串值

  24. 24

    如何使用IndexOf和substring Java从字符串中提取多个单词?

  25. 25

    如何使用 Python 和 re 从字符串中提取准确的单词?

  26. 26

    如何在Google表格中列出最常用的3个单词的字符串

  27. 27

    如何从字符串中提取最后4个单词?

  28. 28

    如何从字符串中提取“单词形式的数字”

  29. 29

    如何从结构化字符串中提取单词?

热门标签

归档