Tesseract-OCR 是一款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 也可以通过训练来提高识别率,训练过程需要较长时间,需要预先准备好训练数据和训练样本。
训练步骤大致如下:
收集并清理训练数据,即包含所需字符集的图片文件,例如字母、数字、符号等。
制作训练样本,格式为 box。
bash
tesseract image.png output batch.nochop makebox
创建字库文件,包含所有训练字符及其对应图片。
bash
unicharset_extractor *.box
字体训练,生成 traineddata 文件。
```bash
shapeclustering -F font_properties -U unicharset *.tr
mftraining -F font_properties -U unicharset -O eng.unicharset *.tr
cntraining *.tr
combine_tessdata eng.
```
以下是一个中文字符识别的训练过程示例:
下载训练数据
bash
git clone https://github.com/tesseract-ocr/langdata_chi_sim.git
清理训练数据
bash
for file in ./langdata_chi_sim/Lang*.bmp; do convert $file $(basename "$file" .bmp).tif; done
制作训练样本
bash
for file in *.tif; do tesseract $file "$(basename "$file" .tif)" batch.nochop makebox; done
创建字库文件
bash
unicharset_extractor *.box
字体训练
```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 的参数及其作用,以获得更佳的识别效果。