结合Qwen2.5-VL 自动化扫描文件分析

东芝扫描仪 设置扫描发生文件的SMB位置,每日早上将多页的A4文档PDF扫描到该位置

主进程对该PDF转化为JPG(暂不考虑多页情况)并将每个JPG使用Qwen2.5-vl进行识别,生成JSON对其保持,按照每个文件级对应的JSON文件保存到数据库和文件存储服务器中。

主进程对全部扫描后的JSON文件,使用QWEN3-30b-a3b进行统计分析,生成固定的结果。

使用OLLAMA API实现

需安装OPENAI库 pathlib库

import base64
from pathlib import Path
from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

def describe_image(image_path: str, question: str = "请用文字描述这张图片") -> str:
    path = Path(image_path)
    if not path.exists():
        raise FileNotFoundError(image_path)

    with path.open("rb") as f:
        b64_img = base64.b64encode(f.read()).decode()

    response = client.chat.completions.create(
        model="qwen2.5vl:3b",
        messages=[
            {
                "role": "user",
                "content": [
                    {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64_img}"}},
                    {"type": "text", "text": question},
                ],
            }
        ],
        max_tokens=1024,
    )
    return response.choices[0].message.content

# 测试
if __name__ == "__main__":
    print(describe_image("./123.jpg","请总结上面图片信息,请找出其中的:申请部门、合同编号、合同金额、合同名称、对方单位、申请公章名称,并将上面信息分别给予下面的键名:sqbm、htbh、htje、htmc、dfdw、sqgzmc,并将其以json的格式输出。"))


describe_image("图片地址","提示词")
//每次调用都是独立的,不会和上次调用重合起来,只要调整提示词的内容,即可完成对不同OCR的识别格式。

返回信息: 需要吧“`json 和 “` 删掉

```json
{
  "yz": 0,
  "ht": 0,
  "type": 0,
  "sqbm": "",
  "htbh": "",
  "htje": "",
  "htmc": "",
  "dfdw": "",
  "sqgzmc": ""
}
```

发表回复