vue+Tesseract OCR图片识别

 在index.html中引入tesseract.min.js

<script src="<%=BASE_URL%>tesseract/tesseract.min.js"></script>
      console.log("开始识别图片:",file, fileList,index)
      this.$message({message: '图片识别中,请稍等...', type: 'success'});
      this.picLoading = true
      const worker = await Tesseract.createWorker('chi_sim',1,{
        //配置本地资源路径,语言包的实际位置是通过langPath+'/'+lang+'.traineddata.gz'得到的,所以不要改语言包文件名
        workerPath: './tesseract/worker.min.js',
        corePath: './tesseract/tesseract-core.wasm.js',
        langPath: './tesseract/lang-data',
      });
      await (async () => {
        const img = URL.createObjectURL(file.raw);
        await worker.load();
        await worker.loadLanguage('chi_sim');
        await worker.initialize('chi_sim', Tesseract.OEM.LSTM_ONLY);
        const {data: {text}} = await worker.recognize(img, {rotateAuto: true}, {
          imageColor: true,
          imageGrey: true,
          imageBinary: true
        });
        const result = text.replace(/\s*/g, "")
        console.log('图片识别结果:',result)
        this.picLoading = false
 <el-upload
      action="https://jsonplaceholder.typicode.com/posts/"
      list-type="picture-card"
      :auto-upload="false"
      class="my-upload"
      multiple
      :file-list="fileList"
      accept=".jpg,.jpeg,.png,.svg"
      :on-change="(file, fileList) => {picHandleChange(file, fileList)}"
      :on-remove="(file, fileList) => {handleRemove(file, fileList)}"
      :on-preview="handlePictureCardPreview">
      <i class="el-icon-plus"></i>
 </el-upload>

04-03
### 如何在 Vue 中实现 OCR 功能 #### 使用百度 OCR API 实现图片文字识别 通过调用百度 OCR 的 RESTful 接口,可以轻松完成图片的文字提取功能。首先需要将上传的图片转换为 Base64 编码格式[^1]。接着,向百度 OCR 提供的身份验证服务请求 token,并将其用于后续的图片识别操作。 以下是基于百度 OCR 的具体实现方法: ```javascript // 将图片文件转化为Base64编码 function getBase64Image(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); reader.onerror = error => reject(error); }); } async function uploadAndRecognize(file) { try { const base64 = await getBase64Image(file); // 转化为Base64 const accessToken = await fetchAccessToken(); // 获取访问令牌 const result = await callOcrApi(base64, accessToken); // 执行OCR识别 console.log(result); } catch (error) { console.error('Error during OCR process:', error); } } ``` 上述代码片段展示了如何处理前端上传的图片以及调用百度 OCR 服务的过程。 #### 利用 Tesseract.js 进行本地 OCR 处理 另一种方式是采用开源库 **Tesseract.js** 来实现在浏览器端直接解析图像中的文本数据[^2]。这种方式无需依赖外部服务器或 API 密钥即可运行,适合离线环境下的应用需求。 安装 `tesseract.js` 并初始化配置如下所示: ```bash npm install tesseract.js ``` 随后可以在项目中引入该模块并定义相应的函数来加载模型并对目标图片实施分析动作。 ```javascript import { createWorker } from 'tesseract.js'; const worker = createWorker({ logger: m => console.log(m), }); export async function recognizeText(imageDataUrl) { await worker.load(); await worker.loadLanguage('eng'); // 加载英文语言包 await worker.initialize('eng'); const { data: { text } } = await worker.recognize(imageDataUrl); await worker.terminate(); return text; } ``` 此部分介绍了怎样借助 JavaScript 库——Tesseract.js 完成从零构建自己的光学字符读取器的任务。 #### 集成 Paste 组件支持剪切板交互 为了增强用户体验还可以考虑加入对 Ctrl+V 键盘快捷键的支持以便允许用户更便捷地分享屏幕截图等内容给系统做进一步处理[^4]。这里给出一个简单的例子说明如果监听粘贴事件并将捕获到的数据交给先前提到过的任一插件去做最终解释的工作流程。 ```html <template> <div> <paste @result="handlePaste"></paste> </div> </template> <script> import paste from '@/components/paste'; export default { components: { paste }, methods: { handlePaste(data) { if (data.type === 'image') { this.uploadAndRecognize(data.file); } else if (data.text){ console.log(`Pasted Text:\n${data.text}`); } }, uploadAndRecognize(file){ /* Same as previous */ } } }; </script> ``` 以上就是关于如何把光学字符阅读能力嵌入到现代 Web 前端框架之一 ——VueJS 当中的几种常见做法概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值