如何在Python脚本中执行CLI命令,解决调用ABBYY FineReader报错问题
报错原因
- os.system调用问题
- 路径转义错误:Windows路径中的反斜杠
\在Python普通字符串中是转义字符,会导致路径解析错误 - 引号嵌套错误:你写的命令中提前闭合了程序路径的引号,导致系统将空格前的
C:\Program识别为独立命令,触发截断报错 - 文件名不匹配:实际要读取的图片是
Skan.JPG,你写的是skan.JPG,路径不一致会触发报错
- 路径转义错误:Windows路径中的反斜杠
- subprocess调用问题
- 同样存在路径未用原始字符串导致的转义问题
- 参数拆分错误:subprocess传列表参数时,每个参数项必须单独拆分,不能把
/send和Clipboard放在同一个字符串里,否则程序会将整段识别为单个参数无法解析 - 部分测试代码文件名写错为
scan.JPG,和实际路径不符
正确实现方式
优先使用subprocess实现,稳定性和可调试性更强,代码如下:
import subprocess import pyperclip # 可选,用于后续读取剪贴板内容 # 路径加r前缀标记为原始字符串,避免反斜杠转义 ocr_program = r"C:\Program Files (x86)\ABBYY FineReader 15\FineReaderOcr.exe" image_path = r"C:\Python39\Scripts\abbyy\Skan.JPG" # 所有参数单独拆分作为列表元素,不需要额外加引号 cmd_list = [ ocr_program, image_path, "/lang", "Polish", # 不需要波兰语可删除这两项 "/send", "Clipboard" ] # check=True参数会在命令执行失败时主动抛出异常,方便排查 subprocess.run(cmd_list, check=True) # 可选:读取剪贴板中识别完成的文本 ocr_result = pyperclip.paste() print(ocr_result)
如果需要用pyperclip读取剪贴板,可先执行pip install pyperclip安装依赖。
内容的提问来源于stack exchange,提问作者HajpaHajpa
相关产品推荐
相关产品推荐

