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]);
  }
}

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

相关推荐
qingy_20464 分钟前
JavaScript入门笔记
开发语言·javascript·笔记
taotao03314 分钟前
使用 npm 安装pnpm
前端·npm·node.js
问道飞鱼42 分钟前
【前端知识】Javascript前端框架Vue入门
前端·javascript·前端框架·vue
工业互联网专业1 小时前
Python毕业设计选题:基于BS架构的在线学习与推荐系统的设计与实现-django
vue.js·python·django·毕业设计·源码·课程设计
桃始笑叶始泪1 小时前
HTML面试题
java·前端·html
ysj-1211 小时前
创建vue插件,发布npm
javascript·vue.js·npm
YONG823_API1 小时前
高并发的API请求有哪些注意事项?
大数据·前端·数据库·人工智能·网络爬虫
crary,记忆2 小时前
Angular中的ngOnchange()的汇总
前端·javascript·学习·angular
光影少年2 小时前
前端项目性能优化
前端·性能优化
破z晓2 小时前
uniapp 设置form表单以及验证密码
前端·javascript·uni-app