前端使用canvas压缩身份证照片后传base64到后端,OCR一直无法识别,不知怎么回事?

发布于 2022-09-05 23:06:29 字数 1381 浏览 20 评论 0

基本流程是这样的:前端上传身份证照片前使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绝影如岚 2022-09-12 23:06:29

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文