前端ocr技术:electron+vue3中使用tesseract插件识别图片中字符

同学们可以私信我加入学习群!



前言

项目需要ocr技术识别图片中的中文字符,本来这部分是后端的工作,但是因为各种原因,决定前端也做一个版本。

在ai时代之前,ocr技术有一个扛鼎插件——tesseract。现在如果搭建本地ai服务,如果不是通过调用接口的方式做一个api搬运工,就需要在本地部署站点,在一些场景中,仍稍显臃肿。

所以本文开一点历史倒车,介绍下这个相比ai,更轻量化的插件。


一、electron各种csp问题

一般情况下,前端是不用过于关心csp策略的,当然大部分后端可能也不会太关心。但是使用electron开发时,在很多复杂场景下,内容安全策略(CSP)是无法跨过的概念。

这里不过多讲解这个概念,我只告诉大家如果有人告诉你采取这样的方案:

nodeIntegration:true,
contextIsolation:false, 
webSecurity: false,

别听,去找更合适的方案!

这部分网上并没有过多的方案,可能因为是个小众问题。使用tesseract要配置的csp参数实在太多,所以我也懒得每个都讲,只告诉大家如何塌心独自解决问题的方法。

每次报错信息都很清晰,如下图:
在这里插入图片描述
其中的单词如下:Refused to create a worker from ‘blob:http://localhost:5174/bd7a3f24-ee65-4710-a20c-4686ad9b40bd’ because it violates the following Content Security Policy directive: “script-src ‘self’ ‘wasm-unsafe-eval’ * ‘unsafe-inline’”. Note that ‘worker-src’ was not explicitly set, so ‘script-src’ is used as a fallback. Note that ‘*’ matches only URLs with network schemes (‘http’, ‘https’, ‘ws’, ‘wss’), or URLs whose scheme matches self’s scheme. The scheme ‘blob:’ must be added explicitly.

大致意思是拒绝通过blob:xxxx信息创建worker,因为我们设置了script-src,但是没有设置worker-src,所以它自动采用了script-src的配置,但是这个配置里面的*,只能匹配http/https/ws/wss,不能匹配blob:,所以必须要加上这个blob:配置。

我错误的配置如下:

<meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline' * ;connect-src * data: file:; script-src 'self' 'wasm-unsafe-eval' * 'unsafe-inline' ;"/>

可以看到,srcipt-src确实配置了:‘self’ ‘wasm-unsafe-eval’ * 'unsafe-inline’四个参数,没有配置blob:。(注意有个冒号:)

我们按照提示加上这个配置,变为:

 <meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline' * ;connect-src * data: file:; script-src 'self' 'wasm-unsafe-eval' * 'unsafe-inline' blob:;"/>

不再报错。

这只是个示例,这个过程你会配置很多参数,因为tesseract涉及.wasm文件、data数据加载、blob数据加载等等各种敏感操作。基本每次都会报个错,根据报错信息一一修改即可,或者直接用我上面的配置。

二、试用插件

解决了electron的csp问题,才真正开始研究vue中如何使用tesseract插件。

我的tesseract版本是v5.0.5,这个不同于前面的版本,createWorker方法有所改动,在这里定义语言和oem,删了两个方法。官网有所介绍:
在这里插入图片描述
根据官网提示写个简单例子

import { createWorker } from 'tesseract.js';
import {onMounted} from 'vue'
onMounted(async ()=>{
  try {
    // const worker = await createWorker('chi_sim',1,{
    //   langPath:'/lang'
    // })
    const worker = await createWorker('eng')
    console.log(worker)
    const ret = await worker.recognize('/test.png')

    console.log('11111111111',ret.data.text)
    await worker.terminate()
  }catch (e){
    console.log('eeee',e)
  }

})

能够成功。如图:
在这里插入图片描述

注意把图片这些静态资源放入到public中,免得被vue编译。


总结

现在的问题是,官网的中文语言包下载链接失效,默认的语言包是英文,中文识别率感人。等我解决中文识别问题,再把electron打包后的软件和各种资源公布。大家可以先关注。

获取资源,或者联系我:

https://lizetoolbox.top:8080/qrCode_contact

  • 31
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VueScan可以利用以下设备的高级硬件能力:尼康 LS-30/LS-2000,美能达 Dimage ScanDual,惠普PhotoSmart,尼康 LS-20/LS-1000,宝丽来 SprintScan 35/LE/ES/+,和佳能 CanoScan2700F底片扫描仪。利用 VueScan,你能够比平板扫描仪扫描照片更多地控制最终的图像。 VueScan 的特性包括:支持 200 种以上的底片类型,在剪取图像时制成关联单,复杂的白色平衡算法,用于检查物体表面暇疵的红外线底片扫描,成批扫描,自动剪取图像,等等。 VueScan是著名的第三方底片扫描仪驱动程序,支持市场可见绝大多数型号的底片扫描仪,可以更为灵活地控制扫描过程,更深入地发掘硬件潜力,获取色彩 完美的高质量扫描结果。VueScan支持200种以上的底片类型,在剪取图像时制成关联单,复杂的白色平衡算法,用于检查物体表面暇疵的红外线底片扫 描,成批扫描,自动剪取图像等等。 随着软件的走红,Vuescan不断升级,功能不断完善,应用界面也越来越美观实用,最后,很多扫描仪厂商干脆将它作为自己扫描仪的配套驱动程序。 随着数码相机的流行,RAW成为很多喜欢的文件格式,Vuescan也与时俱进,增加了RAW文件转换功能,凭借其优秀的图像算法,在RAW文件转换方 面,vuescan也独树一帜。如今,Vuescan已经发展成为一款多功能的图像处理软件,支持多达750款各类扫描仪和200多款能记录RAW文件的 数码相机,并支持Adobe的DNG数字底片格式! 功能: 支持1200种扫描仪 运行在Mac OS X,Windows和Linux 提高您的工作效率和质量的扫描 创建原始扫描文件 ICC配置文件和色彩空间 IT8色彩校正 注册信息: E-mail Address:wayne@dahaoren.com Serial Number:108824250 Customer Number:1560318833 或者(OR) E-mail Address:www@yyyww.com Serial Number:115973638 Customer Number:1608838852

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中二少年学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值