如何通过OCR从名片图像中提取名字和姓氏?

问题描述 投票:0回答:1

我正在创建一个名片阅读器应用程序,它使用 tesseract API 从名片图像中读取文本,我能够从 ocr 获得的字符串中提取电子邮件 ID、电话号码和网站,但我无法提取字符串中的名字和姓氏

有人可以帮助我吗?预先感谢,请不要介意我的英语

这是我通过OCR处理图像后得到的字符串示例 第二行是名字和姓氏

“Rollon液压技术
艾哈迈德·侯赛因 电话:+91 9535265478 271号,第8十字,第4阶段, 佩尼亚工业区。 班加罗尔 - 560058。印度 电话:91-80—65456988 手机:91-45698 85264 传真:91-80-56545558 电子邮件:[电子邮件受保护] 网站:www.rollonHydraulicstech.com | www.rhcl.com”

android
1个回答
0
投票

xlm-roberta-large-finetuned-conll03-english 可用于提取名称。显示具有最大概率分数的文本结果。对于具有一个名称的图像,其准确率为 71%。但是,在某些情况下它会失败。 代码取自拥抱脸:https://huggingface.co/FacebookAI/xlm-roberta-large-finetuned-conll03-english

from transformers import pipeline, AutoTokenizer, AutoModelForTokenClassification
model_checkpoint = "xlm-roberta-large-finetuned-conll03-english"
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint, add_prefix_space=True)
model = AutoModelForTokenClassification.from_pretrained(model_checkpoint,local_files_only=True)
classifier = pipeline("token-classification",model=model.to("cpu"), binary_output=True, tokenizer= tokenizer, aggregation_strategy = "simple")

extracted_text = '''Rollonhydraulics Technology
Ahmed hussein ph: +91 9535265478 No. 271, 8th Cross, 4th Phase, Peenya Industrial Area.
Bangalore - 560058. INDIA Tel : 91-80— 65456988 Mobile :91-45698 85264 Fax : 91-80-56545558
Email :[email protected] Website: www.rollonhydraulicstech.com | www.rhcl.com'''

def name(extracted_text):
    token = classifier(extracted_text)
    v = [t for t in token if t["entity_group"] == "PER"]
    if len(v) > 0:
        r = max(v, key=lambda z: z['score'])
        name = r['word']
    else:
        return ""
    print("Name:")
    print(name.strip())
    return name.strip()

pname = name(extracted_text)

Spacy、nltk也可以用来提取人名。

如果图像中存在多个名字,或者名字以女士、先生、医学博士等开头,我也会陷入提取人名的困境

© www.soinside.com 2019 - 2024. All rights reserved.