qwen-vl-ocr-latest + 小程序解决了财务小姐姐的大烦恼

277 阅读2分钟

之前用dify + 大模型 + 飞书写了一个简单的工作流,用来对报销的发票进行重复判断。

做财务的都知道,发票重复报销的问题,这个东西完美解决了财务小姐姐的烦恼

解决思路

大模型提取图片的信息,并针对性的进行回答,这个非常适合发票信息提取这个场景,接下来就是把提取的信息进行数据库检索判断是否报销过。

基本流程如图,逻辑比较简单。

image.png

实现过程

界面交互:终端采用uniapp 编写,妥妥的程序员风格,上传图片,点击识别,就好了

image.png

后端架构:后台服务 golang + mysql,golang 调用大模型进行图片识别,再从mysql 进行数据检索,判断重复。

msgInfo := Messages{
    Role: "user",
    Content: []interface{}{
        map[string]interface{}{
            "image":      imgUrl,
            "min_pixels": 3136,
            "max_pixels": 6422528,
        },
        map[string]string{
            "type": "text",
            "text": `请提取车票图像中的发票号码、开票日期,购买方姓名,纳税人识别号,发票金额。
                  要求准确无误的提取上述关键信息、不要遗漏和捏造虚假信息,模糊或者强光遮挡的单个文字可以用英文问号?代替。
                  返回数据格式以json字符串方式输出,格式为:
                  {'发票号码':'xxx', '开票日期':'xxx', '购买方姓名':'xxx', '购方纳税人识别号':'xxx', '发票金额':'xxx'}
                  直接返回json字符串,禁止使用markdown格式输出。`,
        },
    },
}

reqBody := Request{
    Model: "qwen-vl-ocr-latest",
    Input: Input{Messages: []Messages{msgInfo}},
}

reqBodyBytes, err := json.Marshal(reqBody)
if err != nil {
    return resp, err
}

header:= map[string]string{
    "Authorization":"Bearer "+ak,
    "Content-Type":"application/json",
}

大模型 使用阿里 qwen-vl-ocr-latest,每千token 0.005,大概测试了下,识别一次,至少需要1000token,主要看图片大小。

注册送100万token,有效期半年,还可以免费使用一段时间

image.png

小程序已经发布,扫码体验

image.png