npm 包 @tessdata/bos 使用教程

前言

随着越来越多的人开始关注文本识别领域,Tesseract 成为了最为受欢迎的开源 OCR 引擎之一。而她的一个重要组成部分就是训练数据(Tessdata)。Tessdata 中包含了 Tesseract 进行识别所需要的字符和词语的信息。然而,对于一些特殊场景,如中文文本的 OCR,官方提供的 Tessdata 并不能满足我们的需求。因此,我们需要自行训练模型并生成 Tessdata。

在这个过程中,我们需要使用到的一款工具就是 Tesseract-Bos-Shell。又因为 Bos 可以代表 Best OCR Settings,因此,这个工具可以帮助我们获取最佳的 OCR 设置,训练我们的模型,最终生成我们需要的 Tessdata。而我们使用的 Tesseract-Bos-Shell,也就是本文要介绍的 npm 包 @tessdata/bos,是 Tesseract-Bos-Shell 的 Node.js 封装。

在本文中,我们将针对不同场景展示 @tessdata/bos 的使用方法,以便读者们快速上手使用。

安装

在使用 @tessdata/bos 前,我们需要在项目中安装该模块和一些必要的依赖。

--- ------- ------------- ------------ ---------

其中,tesseract.js 和 leptonica 分别是 Tesseract 的 JavaScript 封装和图像处理库。不过,在这篇文章中,我们将不再涉及 tesseract.js 和 leptonica 的使用细节,主要关注 @tessdata/bos 的使用。

使用场景一:获取 OCR 设置

我们先来简单介绍一下工具箱的用法。

--- --- -- ----------- -- ------------

该命令主要用于获取 OCR 设置,其大致过程如下:

  1. 根据传入的 <pages-dir> 中的样本图像,计算每个字符的特征值。
  2. 根据特征值,针对样本图像中的文字,计算最适合的 OCR 设置。
  3. 将这些设置写入到 <output-dir>/bos_best_configs 文件夹下。

假设我们有如下的样本图像和正确的标注:

对于这个例子,我们可以使用下面的代码来获取 OCR 设置:

----- - ---- - - ------------------------
----- --- - ------------------------

----- -------- - ---------
----- --------- - -------

--------- --- -- ----------- -- -------------- ----- ------- ------- -- -
  -- ---- -- ------- -
    ----------------- -- -------
  - ---- -
    ----- ------- - -------------------------------
    --------------------
  -
--

其中,bos.parseBestConfigs 用于解析结果文件,并将结果转化为简单易用的对象。执行结果输出如下:

-
  -------------------------- ---------------------
  ------------------------ -----
  -------------------------------- -----
  ------------------------------ -----
-

在使用这些设置进行识别之前,我们还需要训练模型并生成 Tessdata。这个过程可能需要一些时间,具体过程会在后面介绍。

使用场景二:基于 OCR 设置识别图像

在获取 OCR 设置之后,我们就可以运用这些设置,进行 OCR 识别了。下面,我们将演示如何将这些 OCR 设置应用在图像中。

首先,我们需要准备一个带有图像文字的示例图像。

----- - ------------ - - -----------------------

----- --- - ---------------------------------------------------

-------------------------- -- -
  --------------------- -
    ----- ----------
  ---------- ----- - ---- - -- -- -
    -----------------
  --
--

这段代码使用 tesseract.js 对图像进行了 OCR 识别,并将识别结果输出到控制台。但是,由于是官方提供的 Tessdata,所以在对含有一些生僻字或特殊场景的文本进行识别时,会表现得不是非常好。不过,我们可以运用 @tessdata/bos 获取到的 OCR 设置来提升识别的准确性。

----- - ------------ - - -----------------------
----- --- - ------------------------

----- --- - ---------------------------------------------------

----- ---------- - -----------------------------

-------------------------- -- -
  --------------------- -
    ----- ----------
    ------------------------ -----------------------------------
    ---------------------- ---------------------------------
    ------------------------------ -----------------------------------------
    ---------------------------- ---------------------------------------
  ---------- ----- - ---- - -- -- -
    -----------------
  --
--

在这个例子中,我们使用 bos.parseBestConfigs 方法来解析文件夹中的 OCR 设置。另外,我们还可以根据不同的场景,对获取到的设置进行调整。

使用场景三:生成 Tessdata

在获取到 OCR 设置之后,我们需要使用这些识别策略,来训练我们自己的 OCR 模型。Tesseract 的主要训练流程可以分为以下几个步骤:

  1. 合并所有训练数据
  2. 根据字符读入字符图像,并对字符切片
  3. 将字符切片放置到模板中
  4. 产生随机样本,并根据 OCR 设置生成新模型
  5. 对模型进行评估
  6. 重复步骤 4 和 5,直到模型评估达到预定义的水平
  7. 根据模型,生成 Tessdata 文件

其中,步骤 7 就是最终要实现的目标,也是使用 @tessdata/bos 的重点。

假如我们已经汇总了我们的训练数据,我们可以使用 bos makebox 生成字符切片,具体使用方法如下:

--- ------- ---------- ----------

在这个例子中,<img-file> 是表示图像文件路径,<box-file> 是将要生成的字符切片文件路径。除此之外,bos 还提供了一系列参数,可以手动调整字符切片策略。

通过下面的代码,我们可以举例说明如何使用 bos 进行训练,并生成 Tessdata:

----- - ---- - - ------------------------
----- --- - ------------------------

----- -------- - ---------
----- ---------- - -------

--------- ------------- ----------- ----------------------------
--------- ---------- ----------- ----------------
--------- ------- -------------------------- -------------------- -- -------- -- ---------
--------- -------- ------------------------ ----- ------- ------- -- -
  -- ---- -- ------- -
    ----------------- -- -------
  - ---- -
    -------------------
    ----- ------- - ----------------------------------
    --------------------
  -
--

相比于第一个场景,我们多了几个步骤。首先,我们运用 bos combine_tiffs 将多张图像拼接到一起,方便后续处理。然后,我们运用 bos gen_textbx 为这些图像生成对应的字符切片。最后,我们使用 bos makebox 生成个个字符的字符切片文件,作为后续训练的输入。关于 bos lstmeval,这是用于评估模型识别准确率的命令。

由于训练时间比较长,因此在这里,我们不会介绍整个训练流程的具体实现细节。不过读者们可以参考 tesseract.js 提供的 OCR 训练文档,使用 @tessdata/bos 更便捷地训练模型。

总结

在本文章中,我们介绍了如何使用 npm 包 @tessdata/bos 来辅助进行 OCR 模型训练。

针对不同场景,我们演示了如何使用 bos 获取最佳 OCR 设置,如何应用 OCR 设置进行 OCR 识别,以及如何生成对应的 Tessdata 文件。

使用 @tessdata/bos,我们可以轻松从底层开始,在实践中提升我们的 OCR 级别。当然,这样的技术成果无论在学术研究、还是市场需求上都有着广泛的应用,值得我们进一步探究。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005624a81e8991b448df8bb


猜你喜欢

  • npm 包 ctr 使用教程

    在前端开发中,我们经常使用各种 npm 包来提高开发效率和代码可维护性。今天,我们来介绍一个非常实用的 npm 包 ctr,它可以帮助我们更方便地管理样式和样式类。

    3 年前
  • npm 包 middleware-cache 使用教程

    在前端的开发过程中,我们经常需要使用缓存来提高网站的访问速度和性能。然而,手动管理缓存是一项繁琐的任务,因此,我们可以使用 middleware-cache npm 包来简化这个过程。

    3 年前
  • npm 包 rx-pubsub 使用教程

    npm 包 rx-pubsub 使用教程 在前端开发中,基于事件驱动的架构是非常常见的,PubSub 就是其中一种机制。RxJS是一个强大的事件处理库,rx-pubsub是一个基于RxJS实现的Pub...

    3 年前
  • npm 包 uls-haiku-pwd 使用教程

    前言 在现代的前端开发中,使用 npm 已经成为了必不可少的一部分。npm 的使用不仅能够方便的管理项目中的依赖和资源,还能够让我们轻松的分享自己编写的模块或代码,让其受益于更广泛的社区。

    3 年前
  • npm 包 @fuzeman/babel-plugin-module-resolver 使用教程

    介绍 在使用前端框架进行开发时,不可避免地会遇到很多的路径问题。例如,使用相对路径去引入某一个资源文件可能会导致路径过长且容易出错。这时候,使用 @fuzeman/babel-plugin-modul...

    3 年前
  • npm包 @sugarcrm/thorn 使用教程

    介绍 @sugarcrm/thorn是一个基于TypeScript开发的快速开发框架,它提供了诸如路由、中间件、请求处理等常用功能。本文将介绍如何使用该框架搭建一个基本的Web应用程序。

    3 年前
  • npm 包 generate-hekyll 使用教程

    在前端开发的过程中,我们经常需要使用到静态网站生成工具,比如 Jekyll。Jekyll 是众所周知的一个十分优秀的静态网站生成框架,它能帮我们生成整洁美观、易于维护的静态网站。

    3 年前
  • npm 包 pickle-rick 使用教程

    前言 在前端开发过程中,我们通常需要使用各种各样的第三方库和插件来提高我们的工作效率。而 npm(Node Package Manager)便是一个用于管理和分享 JavaScript 代码的工具,因...

    3 年前
  • npm 包 cordova-md-nfc 使用教程

    什么是 cordova-md-nfc? cordova-md-nfc 是一个基于 Cordova 的 NFC 插件封装,专门用于移动 Web 应用的 NFC 功能开发。

    3 年前
  • npm 包 moment-period 使用教程

    moment-period 是一个开源的 npm 包,它可以轻松地将时间区间进行处理,使时间的计算、展示和解析变得更加高效和简单。该包收集了 moment.js 操作特定的时间区间的所有方法,并将它们...

    3 年前
  • npm 包 simple-event-mediator 使用教程

    在前端开发中,经常需要进行模块化的开发。而模块的通信是非常关键的一步。在这个过程中,我们可以使用发布/订阅模式(Publish/Subscribe Pattern)来解决不同模块之间的问题。

    3 年前
  • npm 包 class-extends-array 使用教程

    前端的开发过程中,经常会涉及到对数组进行操作,例如数组去重、排序、过滤等等操作。在使用这些操作时,我们经常需要自定义操作方法来应对不同的需求。在这种情况下,npm 包 class-extends-ar...

    3 年前
  • npm 包 @tessdata/deu 使用教程

    简介 tessdata 是一个基于 Tesseract OCR 的开源 OCR 引擎。@tessdata/deu 是其中的一个语言数据包,它支持德语 OCR。 这篇文章将详细介绍如何在前端项目中使用 ...

    3 年前
  • npm 包 pubsub-distinct 使用教程

    当我们需要组件间通信时,一般有两种方式:事件监听和状态管理。 pubsub-distinct 是一个轻量级的事件发布/订阅模块,它可以跨模块传递数据,使得组件之间的通信变得简单。

    3 年前
  • npm 包@tessdata/eng 使用教程

    简介 在前端开发过程中,使用 OCR (Optical Character Recognition)技术对图片中的文本进行识别,是非常常见的需求。Tesseract 是一个优秀的 OCR 引擎,它提供...

    3 年前
  • npm 包 @tessdata/enm 使用教程

    前言 在当今世界,计算机视觉技术越来越成熟,但是其中一个关键的问题是手写识别。@tessdata/enm 就是一个能够识别手写数字的 npm 包,本篇文章主要介绍如何使用该包。

    3 年前
  • npm 包 @tessdata/epo 使用教程

    简介 @tessdata/epo 是一个 npm 包,专用于 OCR(Optical Character Recognition,光学字符识别)技术,可用于将印刷体或手写体的字符转换为机器可读的文本。

    3 年前
  • npm 包 @tessdata/equ 使用教程

    在前端开发中,我们时常需要处理图像识别的功能。而 @tessdata/equ 就是一个用于图像处理的 npm 包,它可以帮助我们更容易的进行图像处理和识别。 安装 要使用 @tessdata/equ ...

    3 年前
  • npm 包 @tessdata/est 使用教程

    前言 随着计算机视觉领域的不断发展,OCR 技术也日趋成熟。OCR 技术可以将图片中的文字信息转化为文本数据,方便进行文本处理。@tessdata/est 是一个 Node.js 库,主要用于将图片中...

    3 年前
  • npm 包 @tessdata/fas 使用教程

    近年来,随着人工智能在各个领域的广泛应用,图像识别技术也变得越来越重要。而 @tessdata/fas 是一个用于快速而准确地识别人脸的 npm 包,可应用于前端开发中的图像处理、相机应用等领域。

    3 年前

相关推荐

    暂无文章