Tesseract 的最新版本第 4 版于 2018 年 10 月发布,它包含一个新的 OCR 引擎,该引擎使用基于长短期记忆(LSTM) 的神经网络系统,旨在产生更准确的结果。
Tesseract.js 一个几乎能识别出图片中所有语言的JS库。
官网:http://tesseract.projectnaptha.com/
git:https://github.com/naptha/tesseract.js
在项目中使用 OCR 功能,常见的 JavaScript库有 Tesseract.js
也可以自行下载本地引用
接下来,我们需要一个方法来加载图片。我们可以在 HTML 文件中创建一个文件输入框,允许用户上传图片。以下是实现方式:
使用 标签创建一个文件输入框, accept 属性确保用户只能选择图片文件。我们还添加了一个按钮用于触发识别过程。
在 JavaScript 中,我们可以使用以下代码来处理用户上传的图片并识别文字:
const imageInput = document.getElementById('imageInput');
const canvas = document.getElementById('imageCanvas');
const ctx = canvas.getContext('2d');
imageInput.addEventListener('change', (event) => {
const file = event.target.files[0];
const reader = new FileReader();
reader.onload = (e) => {
const img = new Image();
img.onload = () => {
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0);
};
img.src = e.target.result;
};
reader.readAsDataURL(file);
});
function processImage() {
// 将canvas转换为base64编码的URL,然后传递给OCR服务
const imageDataURL = canvas.toDataURL('image/png');
// 这里调用OCR服务,例如Tesseract.js或外部API
recognizeText(imageDataURL);
}
function recognizeText(imageDataURL) {
Tesseract.recognize(
imageDataURL,
'eng', // 语言选项,可以是'chi_sim'(简体中文)等
{
logger: m => console.log(m) // 可选的日志记录功能
}
).then(({ data: { text } }) => {
document.getElementById('result').innerText = text;
}).catch(error => {
console.error('OCR failed:', error);
});
}
这里,我把以上代码,封装到app.js 里面了
这段代码中, FileReader 用于读取用户上传的图片文件。 Tesseract.recognize方法会对图片进行识别,并且会输出识别文本。
在上一步的代码中,我们已经实现了识别结果的输出和展示。可以通过 document.getElementById('result').innerText = text; 将提取的数据在div里面显示。
需要 引入
QRCode.js 是制作 QRCode 的 JavaScript 库。 QRCode.js 支持跨浏览器使用 HTML5 Canvas 和 DOM 中的 Table 标签
function changes(){
var txt=document.getElementById('result').textContent;
var qr=new QRCode(document.getElementById("qrcode"), {
text: txt,
width: 100,
height: 100,
colorDark: '#000000', // 二维码深色部分的颜色
colorLight: '#ffffff', // 二维码浅色部分的颜色
});
}
new QRCode(document.getElementById("qrcode"), "数据"); // 设置要生成二维码的链接
或者使用一些可选参数设置:
var qrcode = new QRCode("test", { text: "数据", width: 128, height: 128, colorDark : "#000000", colorLight : "#ffffff", correctLevel : QRCode.CorrectLevel.H });
Image通过OCR提取文字并生成二维码
注意:app.js 上完已经讲到,请注意,我本地使用tesseract.js,是因为我把它下载到本地了,如果没有下载,可以