VUE识别图片文字(tesseract.js)

效果:1:

效果图2:

一、安装tesseract.js

复制代码
npm i tesseract.js

二、静态页面实现

html 复制代码
<template>
  <div>
    <div style="marginTop:100px">
      <input @change="handleChage" type="file" id="image-input" accept="image/*">
      <br />
      <button @click="processImage">提取文字</button>
      <div id="show-picture"></div>
    </div>
    <div>
      <p style="color:red">提取到的内容:</p>
      <span id="result"></span>
    </div>
  </div>
</template>

三、选择图片显示在页面上

html 复制代码
<script setup>
    
    import { createWorker } from 'tesseract.js'; 

    
    //将选择的图片显示在页面上
    const handleChage = () => {
       
      document.getElementById("result").innerText = ""
      let getUserPhoto = document.getElementById("image-input");


        //创建一个FileReader对象,用于读取图像文件
      let reader = new FileReader();

        //读取第一个文件,并转为base64格式
      reader.readAsDataURL(getUserPhoto.files[0]);

        //只显示第一个图片
      reader.onload = function () {
        let image = document.createElement("img");
        image.width = "400";
        
        //设置图片
        image.src = reader.result;
        let showPicture = document.getElementById("show-picture");
        while (showPicture.firstChild) {
          showPicture.removeChild(showPicture.firstChild);
        }
        showPicture.appendChild(image)
      };
    }

<script>

四、核心代码,功能实现

javascript 复制代码
const processImage = () => {
  let worker;
  let input = document.getElementById('image-input');
  if (input.files && input.files[0]) {
    let reader = new FileReader();
    reader.onload = async function (e) {
      
      //创建一个Worker线程,参数为需要识别的语言, chi_sim代表简体中文
      worker = await createWorker('chi_sim')
      worker.recognize(e.target.result)
        .then(result => {

          // 提取出的文字,给元素赋值
          let extractedText = result.data.text;
          document.getElementById('result').innerText = extractedText;

        })
        .catch(error => {
          console.error('Error:', error);
        }).finally(() => {
          if (worker)
            
            // 清除当前Worker线程
            worker.terminate();

        })
    };
    reader.readAsDataURL(input.files[0]);
  }
}

五、注:只能识别标准文本图片,并且会有误差,识别别的的图片效果会差很多

相关推荐
慌糖1 分钟前
RabbitMQ:消息队列的轻量级王者
开发语言·javascript·ecmascript
Mintopia8 分钟前
Three.js 深度冲突:当像素在 Z 轴上玩起 "挤地铁" 游戏
前端·javascript·three.js
Penk是个码农12 分钟前
web前端面试-- MVC、MVP、MVVM 架构模式对比
前端·面试·mvc
markyankee10114 分钟前
Vue.js 入门指南:从零开始构建你的第一个应用
vue.js
MrSkye15 分钟前
🔥JavaScript 入门必知:代码如何运行、变量提升与 let/const🔥
前端·javascript·面试
白瓷梅子汤19 分钟前
跟着官方示例学习 @tanStack-form --- Linked Fields
前端·react.js
爱学习的茄子23 分钟前
深入理解JavaScript闭包:从入门到精通的实战指南
前端·javascript·面试
zhanshuo1 小时前
不依赖框架,如何用 JS 实现一个完整的前端路由系统
前端·javascript·html
火柴盒zhang1 小时前
websheet在线电子表格(spreadsheet)在集团型企业财务报表中的应用
前端·html·报表·合并·spreadsheet·websheet·集团财务
讨厌吃蛋黄酥1 小时前
智能前端新纪元:语音交互技术与安全实践全解析
javascript