我正在创建一个名片阅读器应用程序,它使用 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”
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也可以用来提取人名。
如果图像中存在多个名字,或者名字以女士、先生、医学博士等开头,我也会陷入提取人名的困境