免费 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 工作原理的用户提供了极佳的起点。
开始使用 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 操作之前应用多种图像预处理步骤。
如何通过 JavaScript 库在 OCR 操作前进行图像预处理?
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 已提供完整的使用模板进行 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]