如何训练 Tesseract 5 以识别旧扫描书籍中的阿姆哈拉语文本

问题描述 投票:0回答:1

背景

我正在尝试在用阿姆哈拉语(使用埃塞俄比亚文字)编写的扫描旧书上使用 tesseract 5.3.3。

tesseract 的 amh.traineddata 的主要缺点

埃塞俄比亚文字类型的差异:旧阿姆哈拉语文本中存在埃塞俄比亚文字字符,这些字符未在 amh.traineddata 的 unicharset 中使用。

标点符号样式的差异:旧文本使用一些现代阿姆哈拉语中未使用的标点符号,并且对于现代阿姆哈拉语中使用的一些标点符号,旧文本具有 d/t 模式(主要是空格 b/n 单词和标点符号 - -- 虽然旧文本总是在标点符号字符以及前面和后面的单词之间放置空格,但在现代,这些标点符号字符和前面的单词之间没有空格)。

非常窄的训练文本和单词列表(基于tesseract/langdata_lstm tesseract 使用的 amh.training_text 和 amh.wordlist 文本文件(来自 langdata_lstm 的文件)非常小。

(给你一个想法:对于 tir.traineddata (另一种使用埃塞俄比亚脚本的语言),来自 langdata_lstm 的 tir.training_text 有超过 400,000 行,而 amh.training_text 只有大约 400 行)

其他挑战

  • 旧的阿姆哈拉语书籍使用未使用(或可用)的字体。
  • 古老的阿姆哈拉语书籍包含许多 Ge'ez 单词(一种类似于拉丁语的礼拜语言,使用埃塞俄比亚文字)。
  • 古老的阿姆哈拉语书籍大多使用 Ge'ez 数字,而现代阿姆哈拉语文本则使用阿拉伯数字。

到目前为止我做了什么

作为一项实验,我尝试使用近 300 行图像和文本(来自一些旧阿姆哈拉语书籍的示例页面)并使用 langdata_lstm 中的文件(10,000 次迭代)来微调 amh.traineddata(来自 tessdata_best)。

最终的模型在解决上述一些挑战方面有非常令人满意的改进,特别是在标点符号方面。 但它仍然无法解决我遇到的一些字符问题(那些不存在于 amh.traineddata 的 unicharset 中的字符),并且几乎所有 Ge'ez 数字都失败(即使训练样本页面有许多 Ge'ez 数字)。

我打算做什么

首先我想用一个大的training_text和wordlist文件以及一个完整的unicharset文件来训练tesseract, 然后根据旧书中的样本线图像微调生成的训练数据。

问题(目前。我稍后肯定会添加更多问题)

我应该采取另一条路来有效地到达我想要的地方吗?

关于使用大型training_text和wordlist文件以及完整的unicharset文件训练tesseract:

  • 如何准备training_text & wordlist文件? (文本文件应包含什么)
  • 如何准备unicharset文件,以及如何将其传递给
    make training
    命令?

关于从training_text生成文本、图像(tif)和box文件: 我已经查找了 python 脚本来完成这项工作,但对 text2image 中这些参数的正确值有疑问: --font(我应该使用什么标准来选择字体列表), --leading、--xsize、--ysize、--char_spacing、--exposure、--unicharset_file 和 --margin。

最后,我观察到 tesseract/tesstrain 中的示例训练线图像被紧密裁剪,文本行周围的空间最小。从training_text文件生成的线条图像也应该被紧密裁剪吗?

感谢您的宝贵时间

ocr tesseract text2image tesseract-5.x tesstrain
1个回答
0
投票

你有迄今为止所做的事情的回购吗,我有兴趣尝试一下,也许可以加我的 2 美分

© www.soinside.com 2019 - 2024. All rights reserved.