Tesseract.js 网站上所说,它支持 100 多种语言,自动文本定位和脚本检测,用于阅读段落、单词和字符边界框的简单界面。
Tesseract 的最新版本第 4 版于 2018 年 10 月发布,它包含一个新的 OCR 引擎,该引擎使用基于长短期记忆(LSTM) 的神经网络系统,旨在产生更准确的结果。
资源下载:https://download.csdn.net/download/liuhao9999/85824396
要真正了解 Tesseract 的工作原理,我们需要分解它的一些 API 及其组件。根据 Tesseract.js 文档,有两种方法可以使用它。以下是第一种方法及其分解:
Tesseract.recognize(
image,language,
{
logger: m => console.log(m)
}
)
.catch (err => {
console.error(err);
})
.then(result => {
console.log(result);
})
}
该recognize
方法将图像作为第一个参数,语言(可以是多个)作为第二个参数,{ logger: m => console.log(me) }
最后一个参数。Tesseract 支持的图像格式是 jpg、png、bmp 和 pbm,它们只能作为元素(img、视频或画布)、文件对象 ( <input>
)、blob 对象、图像的路径或 URL 和 base64 编码图像提供。
语言以字符串形式提供,例如eng
. 该+
符号可用于连接多种语言,如eng+chi_tra
. 语言参数用于确定要在图像处理中使用的训练语言数据。
{ logger: m => console.log(m) }
对于获取有关正在处理的图像的进度的信息非常有用。logger 属性采用一个函数,该函数将在 Tesseract 处理图像时被多次调用。logger 函数的参数应该是一个具有workerId
, jobId
,status
和progress
属性的对象:
{ workerId: ‘worker-200030’, jobId: ‘job-734747’, status: ‘recognizing text’, progress: ‘0.9’ }
progress
是一个介于 0 和 1 之间的数字,以百分比表示图像识别过程的进度。
Tesseract 自动生成对象作为 logger 函数的参数,但也可以手动提供。随着识别过程的发生,每次调用函数时都会更新logger
对象属性。因此,它可用于显示转换进度条、更改应用程序的某些部分或用于实现任何所需的结果。
上面代码中的result
是图像识别过程的结果。的每个属性result
都有属性 bbox 作为其边界框的 x/y 坐标。
以下是result
对象的属性、含义或用途:
{
text: "I am codingnninja from Nigeria..."
hocr: "<div class='ocr_page' id= ..."
tsv: "1 1 0 0 0 0 0 0 1486 ..."
box: null
unlv: null
osd: null
confidence: 90
blocks: [{...}]
psm: "SINGLE_BLOCK"
oem: "DEFAULT"
version: "4.0.0-825-g887c"
paragraphs: [{...}]
lines: (5) [{...}, ...]
words: (47) [{...}, {...}, ...]
symbols: (240) [{...}, {...}, ...]
}
text
:所有识别的文本为字符串。lines
:每个已识别的文本行的数组。words
:每个已识别单词的数组。symbols
:每个识别的字符的数组。paragraphs
:每个已识别段落的数组。我们将在本文后面讨论“信心”。Tesseract 也可以更强制地使用,如:
import { createWorker } from 'tesseract.js';
const worker = createWorker({
logger: m => console.log(m)
});
(async () => {
await worker.load();
await worker.loadLanguage('eng');
await worker.initialize('eng');
const { data: { text } } = await worker.recognize('https://tesseract.projectnaptha.com/img/eng_bw.png');
console.log(text);
await worker.terminate();
})();
这种方法与第一种方法有关,但实现方式不同。
createWorker(options)
创建一个创建 Tesseract 工作者的 Web 工作者或节点子进程。工作人员帮助设置 Tesseract OCR 引擎。该load()
方法加载 Tesseract 核心脚本,loadLanguage()
加载作为字符串提供给它的任何语言,initialize()
确保 Tesseract 完全可以使用,然后使用识别方法处理提供的图像。terminate() 方法停止工作程序并清理所有内容。