前端使用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
阅读 5.4k
1 个回答
新手上路,请多包涵

好想看看你的后台代码,最近一直在找这方面的东西。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题