如何使用 Deno 实现 OCR 文本识别?

阅读时长 6 分钟读完

OCR(Optical Character Recognition,光学字符识别)是一种将图片或扫描件中的文字转化为可编辑文本的技术,已经被广泛应用于数字化文件、图书馆、归档资料等方面。本文将介绍如何使用 Deno 实现 OCR 文本识别,并且介绍如何利用这一技术应用于前端开发中。

使用 Deno 实现 OCR 文本识别

Deno 是一个用于开发服务器端应用程序和命令行工具的 JavaScript/TypeScript 运行时环境。它是使用 Rust 编写的,具有高效、安全和轻量的特点。我们可以使用 Deno 官方提供的 ImageMagick 库和 Tesseract 库进行 OCR 文本识别。

安装 Deno

安装 Deno 很简单,只需要打开终端,输入代码如下:

安装 ImageMagick 和 Tesseract

ImageMagick 是一个用于创建、编辑和转换图像的软件套件。Tesseract 是一个优秀的 OCR 引擎,可以用来识别多种语言的文本。我们可以使用 Homebrew 安装这两个库。

编写代码

首先,我们需要安装一些库,包括 deno_stdimagetesseract.js。执行以下命令即可安装这些库:

然后,我们需要编写 main.ts 文件:

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

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

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

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

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

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

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

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

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

代码框架解析:

我们首先导入了 denoimageTesseract.js 三个库。然后,我们定义了 imagePathimagePathOutputoutputPath 三个变量,分别存放要识别的图片、处理后的图片和输出的识别结果文件路径。

接着,我们定义了一个 getImage() 函数来读取图片并返回一个 Promise 对象。createReadStream() 函数实现了一个可读流从文件系统读取输入图片的内容,image.decode() 函数将缓冲区中的文件解码为 PNG 或 JPG 格式的图像数据,并返回该数据,再使用 promise 将图像数据返回给调用程序。

然后,我们使用 grayscale() 函数对图片进行处理,并创建可写流将其写入为 PNG 文件。在创建这个可写流时,我们通过管道将 PNG 编码器连接到后面的可写流。之后,我们调用 Tesseract.recognize() 函数,对处理后的图片进行 OCR 文本识别,并将其文本信息存储在 textResult.data.text 中,表示识别的文本。

最后,我们使用 Deno.writeTextFile() 将识别的文本保存到文件系统中,输出 outputPath 文件路径。

运行代码

现在,我们可以直接在终端中使用以下命令运行代码:

如何将 OCR 技术应用于前端开发中

在前端开发中,图像处理和 OCR 技术可以广泛应用于各种有趣的应用场景。例如,在一个电影标志识别的应用程序中,我们可以使用相机捕获一张包含电影海报的图片,然后使用我们在本文中介绍的 OCR 技术将电影名称和相关元数据提取出来。

此外,OCR 技术还可以用于自动构建文档、图像数据分析和智能搜索,以及将包含印刷字体的图片转化为可用的、编辑的文本等等。这些技术都有着广泛的应用和学习意义,有助于提高开发人员的技术水平和应变能力。

结论

本文介绍了如何使用 Deno 实现 OCR 文本识别,并提供了一些示例代码。同时,我们还介绍了将 OCR 技术应用于前端开发中的一些有趣的应用情景。希望这篇文章可以为读者带来有关前端开发和 OCR 的启示和指导。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67741c556d66e0f9aaea72b6

纠错
反馈