基于PaddleOCR与Ollama - DeepSeek的发票关键信息提取
库,并且已经启动了本地的deepseek模型服务(通过。变量设置为实际的发票图片路径。
·
以下是实现上述需求的Python代码:
import paddleocr
import ollama
import json
# 初始化PaddleOCR
ocr = paddleocr.PaddleOCR(use_angle_cls=True, lang='ch')
# 读取图片内容并转换为文本
def image_to_text(image_path):
result = ocr.ocr(image_path, cls=False)
text_lines = []
for line in result:
for item in line:
text_lines.append(item[1][0])
return " ".join(text_lines)
# 使用ollama+deepseek提取指定关键字
def extract_keywords(text):
prompt = f"从以下文本中提取以下关键字:卖家名称、客户编号、日期、发票编号,并以json格式返回:{text}"
response = ollama.chat(model="deepseek", messages=[{"role": "user", "content": prompt}])
content = response['message']['content']
# 简单处理一下返回的内容,假设返回的是有效的json字符串
try:
data = json.loads(content.replace("'", "\""))
return data
except:
return {}
# 假设图片路径为当前目录下的发票图片,你需要替换为实际路径
image_path = "invoice.jpg"
text = image_to_text(image_path)
result = extract_keywords(text)
# 补充固定信息(如果有的话,这里假设卖家名称是固定的,实际情况可能需要调整)
result['卖家名称'] = "四海環球食品有限公司"
print(json.dumps(result, ensure_ascii=False, indent=4))
代码说明:
- 导入必要的库:
paddleocr
用于OCR文字识别,ollama
用于调用本地模型服务,json
用于处理JSON数据。 - 初始化PaddleOCR:设置使用角度分类和中文语言。
image_to_text
函数:使用PaddleOCR将图片中的文字转换为文本。extract_keywords
函数:使用ollama调用deepseek模型,从文本中提取指定的关键字,并以JSON格式返回。- 主流程:读取图片文本,提取关键字,补充固定信息(如卖家名称),并打印最终的JSON结果。
请确保你已经安装了paddleocr
和ollama
库,并且已经启动了本地的deepseek模型服务(通过ollama serve deepseek
命令启动)。同时,将image_path
变量设置为实际的发票图片路径。
更多推荐
所有评论(0)