Tesseract.js 是一个 JavaScript 库,可从图像中识别出几乎所有语言的文字。(在线演示)
图像识别
视频实时识别
Tesseract.js 可在浏览器中通过 webpack、ESM 或配合 CDN 的普通 script 标签使用,也可在服务端通过 Node.js 使用。
安装之后,使用起来非常简单:
import { createWorker } from 'tesseract.js';
(async () => {
const worker = await createWorker('eng');
const ret = await worker.recognize('https://tesseract.projectnaptha.com/img/eng_bw.png');
console.log(ret.data.text);
await worker.terminate();
})();
识别多张图像时,用户应只创建一个 worker,对每张图像运行 worker.recognize,最后运行一次 worker.terminate()(而不是对每张图像都执行上面的代码片段)。
Tesseract.js 可通过本地副本或 CDN 的 <script> 标签使用,也可通过 npm 配合 webpack 使用,或在 Node.js 中通过 npm/yarn 使用。
<!-- v5 -->
<script src='https://cdn.jsdelivr.net/npm/tesseract.js@5/dist/tesseract.min.js'></script>
引入脚本后,Tesseract 变量将全局可用,可通过 Tesseract.createWorker 创建 worker。
此外,ESM 构建版本(用于 import 语法)位于 https://cdn.jsdelivr.net/npm/tesseract.js@5/dist/tesseract.esm.min.js。
Tesseract.js v7 需要 Node.js v16 或更高版本。(Tesseract.js v6 需要 Node.js v14 或更高版本。)
# 最新版本
npm install tesseract.js
yarn add tesseract.js
# 旧版本
npm install tesseract.js@3.0.3
yarn add tesseract.js@3.0.3
Tesseract.js 旨在将 Tesseract OCR 引擎(一个独立项目)引入浏览器和 Node.js,其工作原理是封装 Tesseract 的 WebAssembly 移植版。本项目不修改 Tesseract 核心功能。尤其要注意的是,Tesseract.js 不支持 PDF 文件,也不会修改 Tesseract 识别模型来提高准确率。
如果你的项目需要超出此范围的功能,可以考虑 Scribe.js 库。Scribe.js 是一个替代库,用于满足本仓库范围之外的常见功能需求。Scribe.js 包含对 Tesseract 识别模型的改进,并支持从 PDF 文档中提取文本等功能。更多信息请参阅 Scribe.js 与 Tesseract.js 对比。
以下是社区使用 Tesseract.js 构建的示例和项目。官方支持的示例位于 examples 目录中。
blocks 输出生成细粒度数据 [单词/符号级别]:https://github.com/Kishlay-notabot/tesseract-bbox-examples如果你有使用 Tesseract.js 的项目或示例仓库,欢迎通过 pull request 将其添加到本列表。提交的示例应有良好的文档说明,以便新用户能够运行;项目应可正常运行并得到积极维护。
版本 6 的变更记录在此 issue 中。重点如下。
- 修复了之前版本中的内存泄漏问题
- 整体降低了运行时间和内存占用
- 破坏性变更:
- 除 text 之外的所有输出格式默认被禁用。
- 例如,要重新启用 hocr 输出,请设置:worker.recognize(image, {}, { hocr: true })
- 对 JavaScript 对象(blocks)输出结构的细微调整
- 完整列表请参见此 issue
版本 5 的变更记录在此 issue 中。重点如下。
createWorker 参数发生变化createWorker 中进行createWorker("chi_sim", 1)worker.initialize 和 worker.loadLanguage 函数从 v2 升级到 v5?请参阅本指南。
版本 4 包含许多新功能和错误修复——完整列表请参见此 issue。以下是一些重点。
createWorker 现在是异步的getPDF 函数被 pdf 识别选项取代要运行 Tesseract.js 的开发副本,请执行以下操作:
# 首先克隆仓库
git clone https://github.com/naptha/tesseract.js.git
cd tesseract.js
# 然后安装依赖
npm install
# 最后启动开发服务器
npm start
开发服务器将在你喜欢的浏览器中通过 http://localhost:3000/examples/browser/basic-efficient.html 访问。
当你修改 src 文件夹中的文件时,它会自动重新构建 tesseract.min.js 和 worker.min.js。
要构建编译后的静态文件,只需执行以下命令:
npm run build
这会将文件输出到 dist 目录中。
在提交 pull request 之前,请始终确认自动化测试通过。要在本地运行自动化测试,请执行以下命令。
npm run lint
npm run test
本项目的存在得益于所有参与贡献的人。[参与贡献]。
成为资金贡献者,帮助我们维持社区。[参与贡献]
以你的组织名义支持本项目。你的 logo 将显示在这里,并链接到你的网站。[参与贡献]