Tesseract特殊字符白名单失效及空格丢失问题求助
问题原因分析
你的问题主要由三个参数配置错误导致:
- 语言包参数错误:
-l Latin不是Tesseract支持的语言代码,Tesseract的-l参数需要指定具体的语言包(如西班牙语spa,这类语言原生支持ñ、á等特殊字符),而不是脚本名称。 - 白名单遗漏空格:你设置的
tessedit_char_whitelist中没有包含空格字符,Tesseract会过滤掉所有不在白名单内的字符,自然不会输出单词间的空格。 - 命令行编码问题:Windows默认命令行编码为GBK,直接输入UTF-8编码的特殊字符(如ñ、á)会导致Tesseract无法正确解析白名单中的这些字符,从而忽略它们。
解决方案
安装并使用正确的语言包
下载安装西班牙语语言包(spa.traineddata),将其放入Tesseract的tessdata目录,然后将命令中的-l Latin替换为-l spa。修正白名单并处理编码
- 先在命令行执行
chcp 65001切换到UTF-8编码,确保特殊字符能正确传递。 - 更新白名单,加入空格字符,修改后的命令如下:
tesseract text.png stdout --psm 6 -l spa -c tessedit_char_whitelist="aáeéiocfhklmnñtÑ "
(注意白名单末尾的空格,用引号包裹避免命令行解析错误)
- 先在命令行执行
调整PSM模式(可选)
如果--psm 6(假设文本为单一均匀块)不适合你的图像,可以尝试更合适的模式,比如:--psm 3:默认模式,自动处理分页、分段--psm 11:针对稀疏文本,尽可能识别所有可见文本
使用配置文件规避编码问题(可选)
创建一个文本文件whitelist.cfg,内容如下:tessedit_char_whitelist aáeéiocfhklmnñtÑ然后执行命令:
tesseract text.png stdout --psm 6 -l spa --user-words whitelist.cfg
内容的提问来源于stack exchange,提问作者lisa
相关产品推荐
相关产品推荐

