前端使用canvas压缩身份证照片后传base64到后端,OCR一直无法识别,不知怎么回事?
基本流程是这样的:前端上传身份证照片前使用canvas进行压缩后通过ajax把base64传到后端,后端再调用ocr进行识别,返回身份证上的信息。但现在上传后OCR一直报错----无法识别照片(如果不压缩就可以识别),代码如下:
js:
let reader = new FileReader()
// 将图片转成base64格式,img是input标签获取的图片
reader.readAsDataURL(img)
reader.addEventListener('load', function () {
var base64 = reader.result
let image = new Image()
image.src = base64
img.onload = () => {
let canvas = document.createElement('canvas')
let width = image.width
let height = image.height
// 如果图片大于四百万像素,计算压缩比并将大小压至400万以下
let ratio
console.log('图片像素为:' + width * height / 1000000 + '百万')
if ((ratio = width * height / 4000000) > 1) {
ratio = Math.sqrt(ratio)
width /= ratio
height /= ratio
} else {
ratio = 1
}
canvas.width = width
canvas.height = height
// 进行最小压缩
let ndata = canvas.toDataURL('image/jpeg', 0.1)
console.log('压缩前:' + base64.length)
console.log('压缩后:' + ndata.length)
console.log('压缩率:' + ~~(100 * (base64.length - ndata.length) / base64.length) + '%')
var imgdata = ndata.split(',')[1]
imgdata = encodeURIComponent(imgdata)
//将imgdata上传到服务器......
}
})
Java代码:
data = Base64.decodeBase64(file_data);
//将data送去做ocr
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好想看看你的后台代码,最近一直在找这方面的东西。