使用Tesseract的tessedit_char_whitelist时,如何正确保存结果到output.txt?
解决Tesseract命令参数错误的问题
我来帮你理清这个问题——你碰到的问题本质是Tesseract命令的参数顺序和语法用错了,咱们一步步来修正:
首先,先明确Tesseract的基础命令结构:
tesseract <输入图片路径> <输出目标> [配置选项]
这里的<输出目标>有两种用法:要么是输出文件的前缀名(会自动生成.txt后缀),要么是stdout(表示输出到标准控制台)。
你的错误命令里,最后多了TextOutput这个多余的参数,导致Tesseract误解了你的意图,它会尝试把TextOutput当成某个输入文件或者错误的参数来处理,自然就会出现“试图打开输出文件”的异常。
正确的两种用法:
1. 直接输出到文件(推荐,最简单)
不需要用stdout,直接指定输出文件的前缀,同时加上字符白名单配置:
tesseract image.jpg TextOutput -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ%/-15
执行后会自动生成TextOutput.txt文件,里面就是识别后的文本内容。
2. 使用stdout输出并重定向到文件
如果你需要通过标准输出做额外处理(比如管道传递给其他命令),可以用stdout,然后通过重定向符号>把内容写入文件:
tesseract image.jpg stdout -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ%/-15 > TextOutput.txt
这个命令会把识别结果先输出到控制台,再通过>重定向到TextOutput.txt里。
小提示:
- 字符白名单里的特殊字符(比如
-)尽量放在最后,避免被Tesseract误判为选项的一部分,你当前的写法已经做到了,没问题。 - 如果是较旧版本的Tesseract,可能要求配置选项
-c放在输出目标之前,但最新版本已经支持放在后面,不过保险起见也可以写成:tesseract image.jpg -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ%/-15 TextOutput
内容的提问来源于stack exchange,提问作者Luka Vlaskalic
相关产品推荐
相关产品推荐

