赞
踩
通过上文PaddleOCR环境搭建并简单提取文字
已经可以实现从图片提取文字。
通过以下代码循环获取文本列表。
txts = [line[1][0] for line in result]
接下去可以使用PaddleNLP进行关键信息抽取
PaddleNLP是一款简单易用且功能强大的自然语言处理开发库。聚合业界优质预训练模型并提供开箱即用的开发体验,覆盖NLP多场景的模型库搭配产业实践范例可满足开发者灵活定制的需求。
官方gitee仓库:https://gitee.com/monkeycc/PaddleNLP
打开Anaconda Prompt
安装paddlenlp
pip install paddlenlp -i https://pypi.tuna.tsinghua.edu.cn/simple
这里我们引用PaddleNLP的一键预测功能无需训练,直接输入数据即可通过抽取结果。
from paddlenlp import Taskflow
# 获取信息抽取模型information_extraction
ie = Taskflow('information_extraction', schema=[])
txts = [line[1][0] for line in result]
# 合并文本
all_context = "\n".join(txts)
schema = ['甲方', '乙方', '工程名称','工程地点']
ie.set_schema(schema)
# nlp模型推理
nlp_result = ie(all_context)
print(nlp_result)
输出:
[{
‘甲方’: [{‘text’: ‘叶县环境保护局’, ‘start’: 7, ‘end’: 14, ‘probability’:
0.9188739300160371}],
‘乙方’: [{‘text’: ‘叶县建昆重政工程有限公司’, ‘start’: 18, ‘end’: 30, ‘probability’: 0.8437942288489282}],
‘工程名称’: [{‘text’:‘叶县环境空气质量自动监测站建设工程’, ‘start’: 144, ‘end’: 161, ‘probability’:
0.8328638234375312}],
‘工程地点’: [{‘text’: ‘叶县’, ‘start’: 7, ‘end’: 9, ‘probability’: 0.8829175051535643}]
}]
分析结果得出数据结构为[{}]的形式嵌套,即列表里嵌套字典。
使用下列代码格式化结果:
for key in schema:
value = nlp_result[0][key][0]['text']
print(key+':'+value)
输出:
甲方:叶县环境保护局
乙方:叶县建昆重政工程有限公司
工程名称:叶县环境空气质量自动监测站建设工程
工程地点:叶县
完整代码:
from paddleocr import PaddleOCR, draw_ocr from PIL import Image # paddleocr目前支持中英文、英文、法语、德语、韩语、日语等80个语种,可以通过修改lang参数进行切换 ocr = PaddleOCR(use_angle_cls=False, lang="ch") # need to run only once to download and load model into memory img_path = "./test_img/hetong2.jpg" result = ocr.ocr(img_path, cls=False) # 引用nlp from paddlenlp import Taskflow # 获取信息抽取模型information_extraction ie = Taskflow('information_extraction', schema=[]) txts = [line[1][0] for line in result] print(txts) # 合并文本 all_context = "\n".join(txts) schema = ['甲方', '乙方', '工程名称','工程地点'] ie.set_schema(schema) # nlp模型推理 nlp_result = ie(all_context) print(nlp_result) result = [] # 格式化预测结果 for key in schema: value = nlp_result[0][key][0]['text'] print(key+':'+value)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。