65 lines
2.3 KiB
JavaScript
65 lines
2.3 KiB
JavaScript
export const getOcr = (url) => {
|
||
return new Promise((resolve, reject) => {
|
||
wx.request({
|
||
url: 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions',
|
||
method: 'POST',
|
||
dataType: 'json', // 微信官方文档中介绍会对数据进行一次JSON.parse
|
||
header: {
|
||
'Authorization': 'Bearer sk-52414b887aee47e4883caf16cbf801bd',
|
||
'Content-Type': 'application/json'
|
||
},
|
||
data: {
|
||
"model": "qwen-vl-ocr-latest",
|
||
"messages": [{
|
||
"role": "user",
|
||
"content": [{
|
||
"type": "image_url",
|
||
"image_url": {
|
||
"url": url
|
||
},
|
||
"min_pixels": 3136,
|
||
"max_pixels": 6422528
|
||
},
|
||
{
|
||
"type": "text",
|
||
"text": "要求准确无误的提取上述关键信息、不要遗漏和捏造虚假信息,模糊或者强光遮挡的单个文字可以用英文问号?代替。返回数据格式以MD方式输出"
|
||
}
|
||
]
|
||
}]
|
||
},
|
||
success(res) {
|
||
const data = parseMarkdownTable(res.data.choices[0].message.content)
|
||
resolve(data);
|
||
},
|
||
fail(err) {
|
||
console.log(err)
|
||
// 断网、服务器挂了都会fail回调,直接reject即可
|
||
reject(err);
|
||
},
|
||
});
|
||
})
|
||
}
|
||
|
||
function parseMarkdownTable(md) {
|
||
// 拆分行,去掉空行
|
||
const lines = md.split('\n').filter(line => line.trim().length > 0);
|
||
|
||
// 找到表头和数据行
|
||
const headerLine = lines[0];
|
||
const header = headerLine.split('|').map(h => h.trim()).filter(Boolean);
|
||
|
||
// 数据行从第三行开始(第二行为分隔符)
|
||
const dataLines = lines.slice(2);
|
||
|
||
// 解析每一行
|
||
const result = dataLines.map(line => {
|
||
const cells = line.split('|').map(cell => cell.trim()).filter(Boolean);
|
||
const obj = {};
|
||
header.forEach((key, idx) => {
|
||
obj[key] = cells[idx];
|
||
});
|
||
return obj;
|
||
});
|
||
|
||
return result;
|
||
} |