基于Keras的无分割手写文本识别开发技术问询
无分割手写文本识别应用开发记录
项目背景
最近我在开发一款无分割手写文本识别应用,当前核心的第一步工作,是从输入文档中提取出需要识别的文本行。
训练数据集选用
开发阶段我用的是IAM Handwriting Database,这个数据库很贴心,不仅提供了文本行的图像数据,还附带了对应的ASCII格式标注文本,正好能满足模型训练的标注需求。
识别方案设计
我的识别方案参考了两篇经典的学术论文:
- 《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》
- 《Can We Build Language-independent OCR Using LSTM Networks?》
具体实现上,我采用了双向GRU架构,同时结合前后向算法来完成转录文本和神经网络输出之间的对齐工作。
图像数据预处理与格式说明
数据库里的图像会被处理成一维像素值序列,预处理的关键步骤之一是把所有图像统一缩放至32像素高度。举个实际例子:
- 一张原始尺寸为597×32的图像,处理后对应的numpy数组形状是
(597, 32) - 如果是包含n张训练图像的数据集,对应的numpy数组形状就是
(n, w, 32),其中w是文本行图像的可变宽度(比如前面提到的597)
训练数据加载代码片段
下面是我用来加载训练图像和对应转录文本的代码示例:
x_train = [] y_train = [] line_height_normalized = 32 for i in range(sample_size): transcription_train, image_train = self._get_next_sample() image_train = convert_to_grayscale(image_train) image_train = scale_y(image_train, line_height_normalized) # 后续的图像与标注处理逻辑...
内容的提问来源于stack exchange,提问作者vein
相关产品推荐
相关产品推荐

