SimpleHTR 项目介绍
项目概述
SimpleHTR 项目是一个基于 TensorFlow 开发的手写文本识别系统,专注于处理 IAM 离线手写文本识别数据集。该系统可以识别图像中的单个单词或多词行,并输出识别的文本信息。项目旨在以简单的结构实现高效的文本识别,识别准确率高,字符错误率约为10%。
功能特点
- 多种模型支持:用户可以选择使用预先训练好的模型,其中一个专注于图像中的单个单词,另一个则可以识别文本行。
- 命令行运行支持:用户可以通过执行简单的 Python 命令来运行模型进行文本推断。
- 灵活的解码选项:提供多种解码模式选择,包括最佳路径(bestpath)、束搜索(beamsearch)和单词束搜索(wordbeamsearch),使识别更为精确。
- 快速数据加载:借助 LMDB 数据库加速图片加载过程,尤其适用于大批量数据训练。
使用指南
运行演示
- 下载其中一个预训练模型:
- 对于单个单词图像模型,只能处理图像中的单个单词,但在 IAM 数据集上效果更佳。
- 对于文本行图像模型,能够处理包含多个单词的图像。
- 将下载的模型文件解压至项目的
model
目录。 - 进入项目的
src
目录,通过命令行运行推断代码。例如:
识别单词图像;或:python main.py
识别文本行图像。python main.py --img_file ../data/line.png
训练模型
-
准备数据集:
- 在 IAM 数据库注册并下载需要的文件。
- 创建数据集目录,并在目录内创建
img
和gt
子文件夹。 - 将下载的文本描述文件放入
gt
目录,将图像解压内容放入img
目录。
-
运行训练:
- 删除
model
目录下的文件以便从头开始训练。 - 执行训练命令,如:
python main.py --mode train --data_dir path/to/IAM
- 训练过程中数据集会被切分为95%用于训练,5%用于验证。
- 删除
-
加速处理:
- 使用 LMDB 数据库加速图片加载,并使用
--fast
选项优化处理速度。
- 使用 LMDB 数据库加速图片加载,并使用
模型信息
SimpleHTR 采用了一个经过简化的手写文本识别模型结构,包括5层卷积神经网络(CNN)和2层递归神经网络(RNN, LSTM),使用 CTC 损失和解码层进行文本识别。有兴趣的用户可以参考详细的技术文章获取更多信息。
项目参考
SimpleHTR 项目得到了一些学术论文和技术博文的支持,用户可以通过论文深入了解模型的理论背景和实现细节。