OCR (Optical Character Recogni

lxf2023-12-18 23:20:01

OCR (Optical Character Recogni

OCR (Optical Character Recognition,光学字符识别)是一种将手写体或手写字体的标识符、数据等转换成可被电子计算机识别文字的专业技术。在现代社会中,OCR 技术性广泛应用于各行各业,如数字图像处理、自动化技术鉴别、人工智能和。

Tesseract 是一款开源系统的 OCR 模块,最开始由 HP 试验室开发设计,之后被 Google 回收并开源系统。Tesseract 因其高精密和高速运行而著称,适用多语种导量,可用作 OCR 的各类应用领域,如文本识别、车辆识别、身份证验证等。

Rust 是一种安全性、高效率、高并发的软件计算机语言,其生态体系日趋健全,针对性能卓越可靠性和要求高的应用领域,Rust 语言表达具有极强的优点。

文中讨论 Rust 启用 Tesseract 开展 OCR 业务实践活动。

Tesseract

Tesseract 开源系统仓库地址 Github 库房 。Tesseract 特性:

  • 高精密。Tesseract 在对待手写体图像识别时,具有较高的精密度。在一些基准测试中,Tesseract 的准确率能够达到 99% 之上。
  • 多语种适用。Tesseract 适用多语种,包含汉语、日文、韩语、阿拉伯语等。除此之外,Tesseract 还提供了多种字体和字号的鉴别。
  • 性能卓越。Tesseract 在对待海量数据时,具有较高的速率和质量。除此之外,Tesseract 辨识速率能通过线程同步等形式进一步提升。
  • 便于应用。Tesseract 带来了多种多样插口工具等,方便大家开展 OCR 有关的操作。

Tesseract 安装与使用

Tesseract 安装与使用比较简单。在 Linux 系统中,可以用如下所示指令进行施工:

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev

在 Windows 系统中,能从 Tesseract 官方网站下载安装文件 立即下载 进行施工。

别的操作系统的组装请见官方网使用教程

Tesseract 是一个命令行程序,因而最先打开一个终端设备或cmd。该指令都是这样所使用的:

tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]

Tesseract 的应用也很简单。可以用命令行工具 tesseract 开展 OCR 实际操作,如下所示:

tesseract image.png output -l eng

在其中,image.png 是待识别位图文件,output 是输出文件的作为前缀,-l eng 表明使用英语语言表达自动识别。

常见需求场景和使用方法

下面为大家介绍一些 Tesseract 比较常见的需求场景和使用方法。

文本识别

文本识别是 Tesseract 最常见的的使用场景之一。在 OCR 中,文本识别是最重要的作用,是比较容易完成的功效。在文本识别中,Tesseract 可以检测多语种的文字,包含汉语、英语、日文、韩语等。除此之外,Tesseract 还能够鉴别多种字体和字号的文字。

下边是一个应用 Tesseract 开展文本识别的范例编码:

use tesseract::Tesseract;

fn main() {
    let mut tess = Tesseract::new();
    tess.set_lang("eng").unwrap();
    let text = tess
        .ocr_file("image.png", None)
        .unwrap();
    println!("{}", text);
}

在后面的实例编码中,最先创建了一个 Tesseract 案例,随后增设了语言表达为英语。然后,应用 ocr_file 方式对位图文件自动识别,并把鉴别结论导出到操控台子上。

车辆识别

车辆识别是 Tesseract 的另一个普遍应用领域。在车牌识别系统中,Tesseract 可以检测多种多样车牌号的种类,包含一般车牌号、新能源牌照、大使馆车牌号等。除此之外,Tesseract 还能够鉴别车牌号颜色、字体样式和字体大小等相关信息。

下边是一个应用 Tesseract 开展车辆识别的范例编码:

use tesseract::Tesseract;

fn main() {
    let mut tess = Tesseract::new();
    tess.set_lang("chi_sim").unwrap();
    tess.set_variable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ").unwrap();
    let text = tess
        .ocr_file("car.jpg", None)
        .unwrap();
    println!("{}", text);
}

在后面的实例编码中,最先创建了一个 Tesseract 案例,随后增设了语言表达为汉语。然后,应用 set_variable 方式增设了 OCR 引擎的主要参数,特定了车牌号的字段名。最终,应用 ocr_file 方式对车牌号图象自动识别,并把鉴别结论导出到操控台子上。

身份证验证

身份证验证是 Tesseract 的另一个普遍应用领域。在身份证验证中,Tesseract 能够识别身份证的每个信息内容,包含名字、胎儿性别、中华民族、出世日期、详细地址、身份证号等。除此之外,Tesseract 还能够识别身份证的正反两面,并且对身份证的照片开展校准和修枝。

下边是一个应用 Tesseract 开展身份证验证的范例编码:

use tesseract::Tesseract;

fn main() {
    let mut tess = Tesseract::new();
    tess.set_lang("chi_sim").unwrap();
    tess.set_variable("tessedit_char_whitelist", "0123456789X").unwrap();
    let text = tess
        .ocr_file("idcard.jpg", None)
        .unwrap();
    println!("{}", text);
}

在后面的实例编码中,最先创建了一个 Tesseract 案例,随后增设了语言表达为汉语。然后,应用 set_variable 方式增设了 OCR 引擎的主要参数,特定了身份证号码的字段名。最终,应用 ocr_file 方式对身份证件图象自动识别,并把鉴别结论导出到操控台子上。

OCR 升阶使用方法

除开比较常见的需求场景和使用方法以外,Tesseract 还提供了一些升阶使用方法,如下所示。

图像预处理

图像预处理是 OCR 中十分重要的一步。在 OCR 中,图像预处理能提高 OCR 的精度速率,降低 OCR 的差错率。Tesseract 带来了多种多样图像预处理方式,如二值化去噪光滑动态模糊等。

下边是一个应用 Tesseract 开展图像预处理的范例编码:

use tesseract::{Tesseract, Pix};

fn main() {
    let mut tess = Tesseract::new();
    tess.set_lang("eng").unwrap();
    let mut pix = Pix::from_file("image.png").unwrap();
    pix = pix.binarize(128).unwrap();
    let text = tess
        .ocr_pix(&pix, None)
        .unwrap();
    println!("{}", text);
}

在后面的实例编码中,最先创建了一个 Tesseract 案例,随后增设了语言表达为英语。然后,应用 Pix::from_file 方式载入位图文件,并用 binarize 方式进行二值化处理。最终,应用 ocr_pix 方式对处理过的图象自动识别,并把鉴别结论导出到操控台子上。

多线程处理

多线程处理是 Tesseract 的另一个升阶使用方法。在大量数据处理方法时,应用线程同步能提高 OCR 速度和高效率。Tesseract 带来了多种多样多线程处理方式,如并行计算、分布式计算等。

下边是一个应用 Tesseract 开展多线程处理的范例编码:

use tesseract::{Tesseract, Pix};

fn main() {
    let mut tess = Tesseract::new();
    tess.set_lang("eng").unwrap();
    let mut pix = Pix::from_file("image.png").unwrap();
    pix = pix.binarize(128).unwrap();
    let text = tess
        .ocr_pix(&pix, Some(4))
        .unwrap();
    println!("{}", text);
}

在后面的实例编码中,最先创建了一个 Tesseract 案例,随后增设了语言表达为英语。然后,应用 Pix::from_file 方式载入位图文件,并用 binarize 方式进行二值化处理。最终,应用 ocr_pix 方式对处理过的图象自动识别,并选定了连接数为 4。OCR 模块会用 4 个进程予以处理,提升 OCR 速度和高效率。

良好实践

使用 Tesseract 开展 OCR 的过程当中,应注意以下几个方面:

  • 选择适合的语言表达。Tesseract 适用多语种,必须结合实际情况选择适合的语言表达自动识别。
  • 选择适合的图像预处理方式。图像预处理能提高 OCR 的精度速率,必须结合实际情况选择适合的图像预处理方式。
  • 选择适合的字段名。在识别车牌、身份证等信息后,必须结合实际情况选择适合的字段名。
  • 应用多线程处理。在大量数据处理方法时,应用线程同步能提高 OCR 速度和高效率。

结果

文中阐述了怎么使用 Rust 语言表达完成 Tesseract 控制模块开展 OCR,包含 Tesseract 模块详细介绍、常见需求场景和使用方法、OCR 升阶使用方法、良好实践等。在学习中文中,阅读者可以了解 Tesseract 的最基本特征和操作方法,把握 Tesseract 在 OCR 里的普遍应用领域和使用方法,充分了解 Tesseract 的升阶使用方法和良好实践。

本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!