OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  BishengJDK MiniCPM-V 生态外的 OCR 新选择:Tesseract.js — 浏览器端开源 OCR 引擎

BishengJDK MiniCPM-V 生态外的 OCR 新选择:Tesseract.js — 浏览器端开源 OCR 引擎

 
  fossil ·  2026-09-27 11:00:17 · 20 次点击  · 0 条评论  

Tesseract.js

Lint & Test
CodeQL
Gitpod Ready-to-Code
Financial Contributors on Open Collective npm version
Maintenance
License
Code Style
npm
jsDelivr hits (npm)

Tesseract.js 是一个 JavaScript 库,可从图像中识别出几乎所有语言的文字。(在线演示)

图像识别

fancy demo gif

视频实时识别

Tesseract.js Video

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 使用。

CDN

<!-- 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。

Node.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 目录中。

  • 项目
  • Scribe OCR:用于扫描文档(图像和 PDF)的 Web 应用
  • Chrome 扩展程序(Manifest V3):https://github.com/Tshetrim/Image-To-Text-OCR-extension-for-ChatGPT
  • 示例
  • 将 PDF 转换为文本:https://github.com/racosa/pdf2text-ocr
  • 使用 blocks 输出生成细粒度数据 [单词/符号级别]:https://github.com/Kishlay-notabot/tesseract-bbox-examples
  • Electron:https://github.com/Balearica/tesseract.js-electron
  • TypeScript:https://github.com/Balearica/tesseract.js-typescript

如果你有使用 Tesseract.js 的项目或示例仓库,欢迎通过 pull request 将其添加到本列表。提交的示例应有良好的文档说明,以便新用户能够运行;项目应可正常运行并得到积极维护。

v6 的主要变更

版本 6 的变更记录在此 issue 中。重点如下。
- 修复了之前版本中的内存泄漏问题
- 整体降低了运行时间和内存占用
- 破坏性变更:
- 除 text 之外的所有输出格式默认被禁用。
- 例如,要重新启用 hocr 输出,请设置:worker.recognize(image, {}, { hocr: true })
- 对 JavaScript 对象(blocks)输出结构的细微调整
- 完整列表请参见此 issue

v5 的主要变更

版本 5 的变更记录在此 issue 中。重点如下。

  • 默认文件显著减小(英文减小 54%,中文减小 73%)
    • 这使得首次使用的用户(尚未缓存文件)运行时间减少约 50%
  • 显著降低内存占用
  • 破坏性变更:
    • createWorker 参数发生变化
    • 设置非默认语言和 OEM 现在在 createWorker 中进行
      • 例如 createWorker("chi_sim", 1)
    • 应从代码中删除 worker.initialize 和 worker.loadLanguage 函数
    • 完整列表请参见此 issue

从 v2 升级到 v5?请参阅本指南。

v4 的主要变更

版本 4 包含许多新功能和错误修复——完整列表请参见此 issue。以下是一些重点。

  • 新增旋转预处理选项(包括自动旋转),可显著提高准确率
  • 现在可以获取处理后的图像(旋转、灰度、二值化)
  • 改进了对并行处理(scheduler)的支持
  • 破坏性变更:
  • 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 将显示在这里,并链接到你的网站。[参与贡献]










20 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 20 ms
Developed with Cursor