Tesseract 是由 Google 开发的一个开源 OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种语言的文字,包括中文、日文、韩文等。而在前端开发中,可以使用 npm 包 tesseract-wrapper 来调用 Tesseract 实现 OCR 功能。本篇文章将详细介绍如何使用 tesseract-wrapper。
tesseract-wrapper 的安装与引入
首先需要使用 npm 安装 tesseract-wrapper:
npm install tesseract-wrapper
然后在代码中引入 tesseract-wrapper:
const Tesseract = require('tesseract-wrapper');
tesseract-wrapper 的使用方法
tesseract-wrapper 可以通过 recognize
方法识别图片中的文字。该方法有两个参数:图片的路径和一些参数配置。
下面是一个简单的例子:
Tesseract.recognize('path/to/image.jpg') .then(result => console.log(result.text));
上述代码中,recognize
方法的第一个参数是图片的路径,第二个参数是可选的配置项。该方法返回一个 Promise,如果识别成功,Promise 将会 resolve 并返回一个 Result
对象,该对象包括识别出的文本 text
和可信度 confidence
等信息。
参数配置
recognize
方法可以接受一个对象作为第二个参数,该对象可以设置识别的语言、识别区域、输出格式等:
lang
:识别的语言,默认为 'eng',可以指定为其他语言代码,例如中文 'chi_sim'。psm
:识别区域,默认为 '3',可以设置为其他值,例如 '11' 表示识别单个字符。oem
:Tesseract 引擎的使用模式,默认为'3'
,可以设置为'0'
、'1'
或'2'
。preserve_interword_spaces
:是否保留单词间的空格,默认为false
。tessedit_char_whitelist
:指定识别的字符白名单,默认为null
,表示识别所有字符。
下面是一个包含配置项的例子:
Tesseract.recognize('path/to/image.jpg', { lang: 'chi_sim', psm: '11' }) .then(result => console.log(result.text));
更多使用方法
除了识别图片中的文字,tesseract-wrapper 还提供了其他一些方法,例如加载语言数据包、识别多张图片等详情请见 tesseract-wrapper 官方文档。
常见问题及解决方法
在使用 tesseract-wrapper 过程中可能会遇到一些问题,例如识别率低、识别速度慢等。下面是几个常见问题及其解决方法:
- 识别率低:Tesseract 引擎的识别结果与图片的清晰度、文字大小、字体等相关,建议优化图片质量、调整引擎参数、指定识别区域等方法提高识别率。
- 识别速度慢:Tesseract 引擎需要额外加载语言数据包,如果多次调用
recognize
方法,建议先加载语言数据包,以提高速度。另外也可以尝试调整oem
参数使用不同的引擎模式,以获得更快的识别速度。
示例代码
下面是一个完整的示例代码,演示如何使用 tesseract-wrapper 实现图片文字识别并输出识别结果:
const Tesseract = require('tesseract-wrapper'); Tesseract.loadLanguage('eng'); Tesseract.recognize('path/to/image.jpg', { lang: 'eng', psm: '3' }) .then(result => console.log(result.text)) .catch(error => console.error(error));
总结
tesseract-wrapper 提供了方便的接口来调用 Tesseract 引擎实现 OCR 功能,使用起来比较简单。不过在具体使用时需要根据需要配置相应的参数,以获得更好的识别结果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005590781e8991b448d6622