1. 产品
  2.   OCR
  3.   JavaScript
  4.   Guten OCR
 
  

免费 JavaScript 库,用于解析扫描图像和表单中的文本

开源光学字符识别(OCR)JavaScript库,用于在 Web 或 Node.js 应用中从黑白扫描图像和文档中解析文本,支持图像预处理和模板。

在现代数字世界中,光学字符识别(OCR)技术在将扫描图像、手写笔记或打印文档转换为可编辑和可搜索的数据方面发挥着关键作用。对于寻找轻量级开源解决方案的 JavaScript 开发者,Guten OCR 提供了一个引人注目的选择。这个基于 JavaScript 的 OCR 引擎以简洁为设计理念,使其非常适合直接嵌入到基于浏览器或 Node.js 的应用程序中。库中包含多个重要特性,例如基于模板的字符识别、图像阈值化和二值化、字符分割、模板匹配与文本组装、模块化代码库支持等。它专注于识别来自黑白扫描文档的印刷文本,最适合格式良好的文本,如书籍或表格。

Guten OCR 是由 Gutenye 创建的开源 JavaScript OCR 引擎。与需要外部依赖或繁琐设置的重量级 OCR 工具不同,Guten OCR 完全使用 JavaScript 编写,这意味着它可以在网页浏览器中运行,也可以在 Node.js 服务器上运行。该库使用基本的图像处理技术对字符进行分割,并通过字符模式识别系统进行识别。虽然在多语言或手写文本支持方面尚未能与 Tesseract 等商业 OCR 引擎相媲美,但其简洁性和可 hack 的特性使其成为教育项目、概念验证或在自定义 Web 应用中嵌入 OCR 功能的绝佳选择。与 Tesseract 或其他大型引擎不同,Guten OCR 故意保持轻量并专注——这使其成为想要了解 OCR 工作原理的入门理想选择。

Previous Next

开始使用 Guten OCR

推荐的安装 Guten OCR 方法是使用 Brew。请使用以下命令进行顺利安装。

通过 Brew 安装 Guten OCR

 brew install git-lfs 

通过 GitHub 安装 Guten OCR

 git clone git@github.com:gutenye/ocr.git 

您也可以手动安装;直接从 GitHub 仓库下载最新的发布文件。

OCR 操作前的图像预处理

开源的 Guten OCR 库完全使用 JavaScript 编写,使其兼容浏览器和 Node.js 环境。它内置了图像预处理功能,以提升识别准确率。它支持图像二值化(转换为黑白)、降噪、倾斜校正等。以下示例展示了开发者如何在对图像执行 OCR 操作之前应用多种图像预处理步骤。

如何在 OCR 操作之前通过 JavaScript 库应用图像预处理?

const { preprocess } = require('guten-ocr');

// Apply multiple preprocessing steps
const processedImage = preprocess(imageData, [
  'grayscale',    // Convert to grayscale
  'binarize',     // Convert to black and white
  'deskew',       // Correct skew
  'denoise'       // Reduce noise
]);

// Then perform OCR on the processed image
ocr.recognize(processedImage).then(/* ... */);

通过模板进行字符识别

JavaScript 库 Guten OCR 已经提供了在 JavaScript 应用程序中使用模板执行 OCR 操作的完整支持。Guten OCR 的核心是一个模板匹配系统。它不通过训练机器学习模型,而是使用预定义的字符模式。这使得系统更快且更易于理解,但对字体和布局的一致性更为敏感。为了完成此任务,库在画布上渲染每个字符(A–Z、a–z、0–9 等),然后每个字符的二进制矩阵成为参考模板。在分析图像时,库将图像片段与这些模板进行比较,以找到最佳匹配。它通过垂直和水平线扫描的组合来定位边界框。

通过 OCR 库进行字符分割

开源的 JavaScript 库 Guten OCR 使软件开发者能够轻松进行字符分割。图像二值化后,下一步是对单个字符进行分割。Guten OCR 扫描行和列以检测黑色像素密集的区域,将其分离为潜在字符。下面的示例演示了软件开发者如何使用 JavaScript OCR 库进行字符分割。

如何使用 JavaScript 库进行字符分割?

const segment = require('guten-ocr/segment');
const boxes = segment(binarized); // returns array of [x, y, width, height]
 中国人