Tesseract 前端实现 OCR 功能
Tesseract 是由 Google 维护的一款强大的开源光学字符识别(OCR)工具:它可以从图像中提取文本,并支持超过 100 种语言。有时,默认提供的字库可能不足以满足特定应用场景下的需求。这时就需要自行训练新的字库。Tesseract 是一款强大且易于使用的 OCR 工具,无论是通过命令行还是编程接口都可以高效完成从图像到文本的转换任务。此外,它的灵活性还体现在可以根据具体需求定制字库,从
Tesseract OCR 引擎概述
什么是 Tesseract
Tesseract 是由 Google 维护的一款强大的开源光学字符识别(OCR)工具:它可以从图像中提取文本,并支持超过 100 种语言。
主要特点
- 高精度:被认为是目前最优秀的开源 OCR 解决方案之一。
- 灵活性:可通过训练来识别不同的字体和 Unicode 字符。
- 易于集成:可用于命令行界面、编程接口等多种环境。
如何安装 Tesseract
Windows 用户
- 下载 Windows 版本.
- 添加
bin
目录路径至系统变量%PATH%
.
set PATH=C:\Program Files\Tesseract-OCR;%PATH%
- 验证安装是否成功:
tesseract -v
macOS 用户:
推荐使用 Homebrew 来安装 Tesseract.
brew install tesseract
Linux 用户:
大多数发行版都有可用的包管理系统。
Debian / Ubuntu:
sudo apt-get update && sudo apt-get install tesseract-ocr libtesseract-dev libleptonica-dev
Fedora:
sudo dnf install leptonica-devel tesseract tesseract-langpack-eng
基础用法
使用命令行进行 OCR
假设有一个名为 example.png
的图像文件,您可以按照以下步骤进行 OCR 处理:
- 执行 OCR 并保存结果到指定文件:
tesseract example.png result.txt
- 查看输出文件的内容:
cat result.txt
设置语言参数
如果您需要识别的语言不是默认的英语 (eng
),可以添加 -l <language_code>
参数。例如,识别中文简体:
tesseract example_chinese.png result_chinese.txt -l chi_sim
注意:确保已下载相应的语言数据包。如果没有,请访问 Tesseract GitHub 页面 获取更多语言资源。
编程接口
为了更方便地在应用程序中嵌入 OCR 功能,Tesseract 提供了多种编程接口。这里重点介绍两种常见的方式——Python 和 JavaScript。
Python 接口
安装依赖
首先,需安装 pytesseract
包以及 Pillow 库用于图像处理。
pip install pytesseract pillow
示例代码
from PIL import Image
import pytesseract
# 如果 Tesseract 不在系统 PATH 中,则需要手动指定其路径
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 加载图像文件
img_path = 'path/to/image.jpg'
image = Image.open(img_path)
# 进行情感分析
custom_config = r'--oem 3 --psm 6'
result_text = pytesseract.image_to_string(image, config=custom_config)
print(result_text)
JavaScript 接口
使用 tesseract.js
tesseract.js
是一个基于 WebAssembly 的纯 JavaScript 实现,允许在浏览器环境中运行 Tesseract。
安装依赖
npm install tesseract.js
示例代码
const { createWorker } = require('tesseract.js');
(async () => {
const worker = await createWorker({
logger: m => console.log(m),
});
await worker.loadLanguage('chi_sim');
await worker.initialize('chi_sim');
const { data: { text } } = await worker.recognize(
'./path/to/image.png',
'chi_sim', // 指定语言
{
userPatterns TessDataPath + '/chi_sim.user-patterns',
}
);
console.log(text);
})();
自定义字库
有时,默认提供的字库可能不足以满足特定应用场景下的需求。这时就需要自行训练新的字库。
训练新字库的基本步骤
-
准备训练材料:
- 创建一组标注良好的图像文件及其对应的真实文本标签。
-
数据预处理:
- 清晰度调整、去噪等。
-
使用 Tesstrain 工具箱生成必要的中间文件:
-
box.train
文件记录每个字符的位置信息; -
tr
文件存储字符向量化后的特征。更详细的说明参阅官方文档:Tesstrain Documentation.
-
-
合并生成
.traineddata
文件:- 使用
combine_tessdata
工具将上述中间件合成最终的字库文件。
- 使用
-
替换旧字库或将新字库放置于适当目录下让 Tesseract 能够找到它。
总结
Tesseract 是一款强大且易于使用的 OCR 工具,无论是通过命令行还是编程接口都可以高效完成从图像到文本的转换任务。此外,它的灵活性还体现在可以根据具体需求定制字库,从而更好地服务于各类复杂的应用场景。
更多推荐
所有评论(0)