之前用dify + 大模型 + 飞书写了一个简单的工作流,用来对报销的发票进行重复判断。
做财务的都知道,发票重复报销的问题,这个东西完美解决了财务小姐姐的烦恼。
解决思路
大模型提取图片的信息,并针对性的进行回答,这个非常适合发票信息提取这个场景,接下来就是把提取的信息进行数据库检索判断是否报销过。
基本流程如图,逻辑比较简单。
实现过程
界面交互:终端采用uniapp 编写,妥妥的程序员风格,上传图片,点击识别,就好了
后端架构:后台服务 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,有效期半年,还可以免费使用一段时间
小程序已经发布,扫码体验