以下是实现上述需求的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))

代码说明:

  1. 导入必要的库:paddleocr用于OCR文字识别,ollama用于调用本地模型服务,json用于处理JSON数据。
  2. 初始化PaddleOCR:设置使用角度分类和中文语言。
  3. image_to_text函数:使用PaddleOCR将图片中的文字转换为文本。
  4. extract_keywords函数:使用ollama调用deepseek模型,从文本中提取指定的关键字,并以JSON格式返回。
  5. 主流程:读取图片文本,提取关键字,补充固定信息(如卖家名称),并打印最终的JSON结果。

请确保你已经安装了paddleocrollama库,并且已经启动了本地的deepseek模型服务(通过ollama serve deepseek命令启动)。同时,将image_path变量设置为实际的发票图片路径。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐