手写接口使用
1、按操作手册申请服务拿到key
2、获取token
3、
function getWord(img){
var data = {
"image": img
}
console.log(data)
axios.post('https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting?access_token=...',Qs.stringify(data)).then(res=>{
console.log(res)
if(res.data.error_code){
document.getElementById('error').style.display='inline'
document.getElementById('success').style.display='none'
document.getElementById('error').innerHTML= '错误码:'+res.data.error_code+'; 错误提示:'+res.data.error_msg
}else{
// 逻辑
}
})
}
识别率相关
文档里有说明请求参数最短边至少15px
提高识别率方法:
- 横行书写,这样有参考线(一行至少两个字)
- 手写框不要太高height:150px 左右
- 笔迹可以稍微大些
示例
结果
有时也会识别错误
不过相比一开始完全无法识别要好很多了
相关资源
手写板实现原生js现实canvas手写板
得到图片后大小使用canvas转换一下
/**
*转换图片
*
* @param {*} path base64编码图片
* @param {*} obj 设置参数{width:转换后的宽度,height:转换后的高度,quality:转后图片质量}
* @returns
*/
function canvasDataURL(path, obj){
return new Promise(function(resolve,reject){
var img = new Image();
img.src = path;
img.onload = function(){
var that = this;
// 默认按比例压缩
var w = that.width,
h = that.height,
scale = w / h;
w = obj.width || w;
h = obj.height || (w / scale);
var quality = 0.7; // 默认图片质量为0.7
//生成canvas
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
// 创建属性节点
var anw = document.createAttribute("width");
anw.nodeValue = w;
var anh = document.createAttribute("height");
anh.nodeValue = h;
canvas.setAttributeNode(anw);
canvas.setAttributeNode(anh);
ctx.drawImage(that, 0, 0, w, h);
// 图像质量
if(obj.quality && obj.quality <= 1 && obj.quality > 0){
quality = obj.quality;
}
// quality值越小,所绘制出的图像越模糊
var base64 = canvas.toDataURL('image/jpeg', quality);
// 回调函数返回base64的值
resolve(base64);
}
})
}