tesseract-ocr使用以及训练方法

yizhihongxing

Tesseract-OCR使用指南

Tesseract-OCR 是一款OCR字符识别工具,可用于将印刷或手写文字转换为文本或数字字符。本文旨在介绍 tesseract-ocr 的基本使用方法及训练方法。

安装 Tesseract-OCR

  • Linux

    bash
    sudo apt-get install tesseract-ocr

  • MacOS

    bash
    brew install tesseract

  • Windows

    下载安装包并安装。

基本使用方法

语言选择

Tesseract-OCR 支持多种语言文字识别,需要在使用时指定。例如要识别中文,需要将语言设置为 chi_sim:

tesseract image.png output --oem 1 -l chi_sim

其中:

  • image.png 是要识别的图片文件名。

  • output 是识别结果的输出文件名。

  • --oem 1 指定 OCR 引擎的模式,默认为 oem 3。

  • -l chi_sim 设置识别语言为中文简体。

图像处理

在进行文字识别前,最好对图片进行一些处理,以提高识别率。以下是一些常用的图像处理方法:

  • 二值化

    bash
    convert image.png -threshold 75% image_bw.png

  • 裁剪

    bash
    convert image.png -crop 100x100+10+10 image_cropped.png

  • 去噪

    bash
    convert image.png -type grayscale -blur 0x3 -normalize -negate image_clean.png

示例

下面以一个示例说明如何识别一张图片中的文字:

# 下载示例图片
curl -L https://github.com/tesseract-ocr/tesseract/raw/master/test/testing/eurotext.tif -o eurotext.tif

# 语言设置为英文
tesseract eurotext.tif output -l eng

# 打印识别结果
cat output.txt

结果如下:

This is a lot of 12 point text to test the
ocr code and see if it works on all types
of file format.
The quick brown dog jumped over the
lazy dog.

训练 Tesseract-OCR

Tesseract-OCR 也可以通过训练来提高识别率,训练过程需要较长时间,需要预先准备好训练数据和训练样本。

训练步骤大致如下:

  1. 收集并清理训练数据,即包含所需字符集的图片文件,例如字母、数字、符号等。

  2. 制作训练样本,格式为 box。

    bash
    tesseract image.png output batch.nochop makebox

  3. 创建字库文件,包含所有训练字符及其对应图片。

    bash
    unicharset_extractor *.box

  4. 字体训练,生成 traineddata 文件。

    ```bash
    shapeclustering -F font_properties -U unicharset *.tr

    mftraining -F font_properties -U unicharset -O eng.unicharset *.tr

    cntraining *.tr
    combine_tessdata eng.
    ```

示例

以下是一个中文字符识别的训练过程示例:

  1. 下载训练数据

    bash
    git clone https://github.com/tesseract-ocr/langdata_chi_sim.git

  2. 清理训练数据

    bash
    for file in ./langdata_chi_sim/Lang*.bmp; do convert $file $(basename "$file" .bmp).tif; done

  3. 制作训练样本

    bash
    for file in *.tif; do tesseract $file "$(basename "$file" .tif)" batch.nochop makebox; done

  4. 创建字库文件

    bash
    unicharset_extractor *.box

  5. 字体训练

    ```bash
    shapeclustering -F font_properties -U unicharset langdata_chi_sim/Lang*.tr

    mftraining -F font_properties -U unicharset -O chi.unicharset langdata_chi_sim/Lang*.tr

    cntraining langdata_chi_sim/Lang*.tr

    combine_tessdata chi.
    ```

完成以上步骤后,即可通过语言设置 -l chi_sim 来识别中文字符。

结语

Tesseract-OCR 是一个功能强大的OCR识别工具,通过本文所介绍的方法,可以方便快速地进行文字识别和训练。建议读者深入了解 Tesseract-OCR 的参数及其作用,以获得更佳的识别效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:tesseract-ocr使用以及训练方法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Python实现深度遍历和广度遍历的方法

    下面是详细讲解“Python实现深度遍历和广度遍历的方法”的完整攻略。 1. 什么是深度遍历和广度遍历? 深度遍历和广度遍历是图遍历中两种常用的方法。深遍是指从某个节点开始,沿着一条路径一直走到底,直到不能再走为止,然后回溯到上一个节点,走其他路径,直到遍历完整个图。广度遍历是指从某个节点开始,先遍该节点的所有邻居节点,然后历邻居节点的邻居节点,直到遍历完整…

    python 2023年5月14日
    00
  • 详解Python PIL Image.show()方法

    Python PIL是一个强大的图像处理库,其中包含了许多函数和方法。其中,Image.show()方法是一个很常用的方法,它的作用是用系统默认的图像查看器展示当前图片。 方法介绍 PIL库的Image模块提供了显示图像的方法,在这个模块内,show()方法可以接收一个图像对象,并且用默认的可执行文件查看这个图像。 在使用show()方法之前,我们需要先安装…

    python-answer 2023年3月25日
    00
  • python3.6实现学生信息管理系统

    Python3.6实现学生信息管理系统 概述 在本文中,我们将介绍如何使用Python3.6编写一个简单的学生信息管理系统。该系统可以进行学生信息的添加、查找、删除和修改等操作。 实现步骤 1. 创建学生信息类 我们首先需要创建一个学生信息类,该类包含学生的姓名、学号、年龄、性别等基本信息。 class Student: def __init__(self,…

    python 2023年5月30日
    00
  • Python解决走迷宫问题算法示例

    Python解决走迷宫问题算法示例 走迷宫问题是一个经典的搜索问题,目标是找到从起点到终点的一条路径。在Python中,我们可以使用深度优先搜索(DFS)、广度优先搜索(BFS)和A*搜索等算法来解决这个问题。以下是一个完整的攻略,包含了走迷宫问题的实现步骤和例代码。 走迷宫问题的实现步骤 走迷宫问题的实现步骤如下: 定义迷宫。迷宫可以用一个二维数组表示,其…

    python 2023年5月14日
    00
  • Python探索之修改Python搜索路径

    Python探索之修改Python搜索路径 在Python中,搜索路径指的是Python解释器在导入模块时搜索模块的路径列表。Python解释器默认已经设置好了搜索路径,但是有时候我们需要修改搜索路径,比如添加自己的模块或者修改默认模块的搜索路径。 查看当前搜索路径 可以使用sys模块来查看当前的搜索路径,如下所示: import sys print(sys…

    python 2023年6月2日
    00
  • 关于python中的setup.py

    下面是关于Python中的setup.py的完整攻略。 什么是setup.py? setup.py是一个Python脚本,用于描述项目的元数据,并通过调用setuptools库来构建、打包和分发Python模块和应用程序。通常,setup.py需要包含两个主要部分: 描述项目元数据的setup()函数调用。 控制Python构建和分发的命令行接口。 setu…

    python 2023年6月3日
    00
  • python中的格式化输出用法总结

    以下是“python中的格式化输出用法总结”的详细攻略: 格式化字符串 Python提供了一种方便的方法来格式化字符串中的变量。使用格式字符串,可以将变量嵌入到字符串中。格式化字符串通过占位符指示要格式化的变量类型和格式化选项。 字符串格式化的语法 在格式化字符串中,使用占位符来指示要替换的值。占位符由一对花括号{}构成。花括号可以包含一个完整的占位符语法,…

    python 2023年5月20日
    00
  • 基于python实现FTP文件上传与下载操作(ftp&sftp协议)

    基于Python实现FTP文件上传与下载操作(FTP&SFTP协议) FTP(文件传输协议)是一种用于向互联网上传送文件的标准协议,而SFTP(SSH文件传输协议)则是FTP的安全替代。在Python中,通过ftplib库,我们可以使用FTP协议上传和下载文件,通过paramiko库,我们可以使用SFTP协议进行同样的操作。 本文将详细介绍如何基于P…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部