加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 从文本blob中检测名字和姓氏的最佳方法

发布时间:2020-12-13 16:22:38 所属栏目:PHP教程 来源:网络整理
导读:我正在制作一个在美国名片上进行OCR的程序,并尝试返回名字,姓氏等信息.挑战是如何做到这一点. 到目前为止,我已经构建了以下数据文件: first_names.txt (Contains 23k+ first names)last_names.txt (Contains 86k+ last names)job_title.txt (Contains 500+
我正在制作一个在美国名片上进行OCR的程序,并尝试返回名字,姓氏等信息.挑战是如何做到这一点.

到目前为止,我已经构建了以下数据文件:

first_names.txt  (Contains 23k+ first names)
last_names.txt (Contains 86k+ last names)
job_title.txt (Contains 500+ job titles)
us_cities.txt (Contains 10k+ us cities)
states_full.txt (Contains full names of all US states)
states_abv.txt  (Contains all US state abbreviations)

我的目标是让我用空格标记OCR数据,并尝试根据它作为特定类型数据的可能性,给每个字符串赋予“权重”.

例如,文本blob中较早的字符串更可能是名称,公司或标题.同样,如果在first_names.txt或last_names.txt中找到一个字符串,那么它将对第一个/最后一个名称有更多权重.

这种方法在理论上听起来不错,但我想知道从编程角度来看它的最佳方法. (PHP,不是那种语言很重要)棘手的部分是一些令牌的权重与其他令牌相关.例如:

>如果令牌看起来可能是名字,则下一个令牌可能是姓氏.
>有些令牌彼此相关,但如果事情被空格爆炸,我不确定如何将它们联系起来.例如,“Anne Marie,FL”将被视为三个代币 – “Anne”,“Marie”和“FL”.更糟糕的是,“安妮”和“玛丽”将成为第一个名字.现在,如果还根据位置授予了权重,则先前具有名字权重的字符串可以获胜,从而将这些字符串释放为城市.

我知道那里有很多聪明人,所以也许有人对这个有一个想法!

解决方法

知道异常(例如,一个名为Mary Sue的小镇)是有帮助的,但是如果您的软件能够处理最可能的情况,最终用户应该感到高兴.名称可以按每个类别中相对出现频率进行排序:个人姓名,公司名称,城市名称.对于公司,员工人数可用于计算相对可能性.对于城市,人口.

您是否已经有规则来检查包含每个令牌的行的相对位置?

肯定有不少名片格式,但如果你有几百个样本名片,你应该能够识别一些常见的格式规则.只有一些规则可能会有很大帮助.一条规则可能是“80%的所有卡片都有个人姓名和公司名称下面的地址”,虽然您的名片样本可能无法真正代表所有可能的名片,所有语言等,但它是一个开始.即使是几个50%和80%的规则也可以简化您的任务.

你可以用一个荒谬的例子来思考几个规则.

John Smith
Chief Operating Officer
Acme Inc.
123 Main Street
Somewhere,XZ 01010

比…更有可能

Somewhere,XZ
01010
John Smith
Acme Inc.
Chief Operating Officer
123 Main Street

这表明我们可以考虑个人和公司名称相对于邮政编码的相对Y位置.虽然个人姓名,职位和公司名称可能会遵循多个订单中的任何一个,但邮政编码可能位于公司名称下方.邮政编码将更接近城市名称等.

虽然像“萨曼莎”这样的词可能是个人姓名,街道名称或公司名称的一部分,但它很可能是一个人名.您应该能够找到列出出生名称的相对频率,名为“Samantha”的城镇人口以及名称为“Samantha”的注册公司数量的数据库.即使是部分数据库也有助于建立一些合理的可能性猜测.

其他可能的规则:

>字母和数字混合在一行的末尾(对于从左到右的文本)或其自己的行上的5到7位可能是邮政编码.>“Inc”,“Ltd”,“Corp”和其他缩写应该增加一条线被识别为公司名称的可能性>个人姓名可能位于标题上方. (也许85% – 95%的时间?)>电话号码遵循数量有限的模式,并且往往包括邮政编码中找不到的字符:“(”“)”“.”>网站遵循常见模式.即使有人的合法名称是“CarolGreen.com”,如果她的名字被认可为网站,她也不会感到惊讶.>“@”符号几乎可以肯定是电子邮件地址的一部分.假设电子邮件地址完全出现,电子邮件地址可能位于人名下方的某一行.>某些信息可能不存在.该卡可能未列出网站.可能有电话号码,但不是街道地址.该人可能没有头衔.个人名片可能没有公司名称.最有可能的是,至少有一行是个人名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读