Tesseract希伯来语新字体训练问题:指定训练命令不被支持
解决Tesseract训练命令不支持的问题(针对Rashi字体)
问题背景
已完成以下操作:
- 克隆tesseract和tesstrain项目
- 添加希伯来语训练文本文件
- 成功运行生成训练图像的Python脚本
- 执行训练命令时提示不被支持,原命令如下:
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=Apex START_MODEL= eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=10000
目标是为Rashi字体完成Tesseract模型训练。
命令错误分析与修正
原命令存在语法错误:START_MODEL= eng中等号和eng之间多了空格,导致参数解析失败。此外,MODEL_NAME建议设置为与希伯来语相关的名称(比如heb_rashi),更符合训练场景。
修正后的训练命令
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=heb_rashi START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=10000
关键注意事项
- 确保当前终端工作目录是tesstrain项目的根目录,否则路径(
../tesseract/tessdata)会失效 - 确认
tesseract/tessdata目录下存在eng.traineddata(作为起始模型)和heb.traineddata(如果有基础希伯来语模型的话) - 检查系统是否安装了训练所需依赖:Leptonica、ImageMagick(
text2image依赖)
生成训练图像的Python脚本(中文注释版)
import os import random import pathlib import subprocess # 希伯来语训练文本路径 training_text_file = 'langdata/heb.training_text' lines = [] # 以UTF-8编码读取训练文本 with open(training_text_file, 'r', encoding='utf-8') as input_file: for line in input_file.readlines(): lines.append(line.strip()) # 训练图像与标注文件的输出目录 output_directory = 'tesstrain/data/Rashi-ground-truth' # 创建目录(如果不存在) if not os.path.exists(output_directory): os.mkdir(output_directory) # 打乱文本行顺序 random.shuffle(lines) # 选取前81行生成训练样本 count = 81 lines = lines[:count] line_count = 0 for line in lines: # 生成每行文本的标注文件 training_text_file_name = pathlib.Path(training_text_file).stem line_training_text = os.path.join(output_directory, f'{training_text_file_name}_{line_count}.gt.txt') with open(line_training_text, 'w', encoding='utf-8') as output_file: output_file.writelines([line]) # 生成图像文件的基础名称 file_base_name = f'heb_{line_count}' # 调用text2image生成带指定字体的训练图像 subprocess.run([ 'text2image', '--font=Mekorot-Rashi Medium', # 指定目标Rashi字体 f'--text={line_training_text}', f'--outputbase={output_directory}/{file_base_name}', '--max_pages=1', '--strip_unrenderable_words', # 移除无法渲染的字符 '--leading=32', # 行间距 '--xsize=3600', # 图像宽度 '--ysize=480', # 图像高度 '--char_spacing=1.0', # 字符间距 '--exposure=0', # 曝光度 '--unicharset_file=langdata/heb.unicharset' # 希伯来语字符集文件 ]) line_count += 1
内容的提问来源于stack exchange,提问作者Solomon P Byer
相关产品推荐
相关产品推荐

