封装到函数中的Python OCR脚本为何无法执行?
问题原因及解决方法
核心原因
- 脚本未处理命令行参数逻辑:执行
python3 ocr-test.py process时,Python会把process作为命令行参数传入脚本,但封装后的代码没有识别该参数并触发process函数调用的逻辑。 - 函数仅定义未主动调用:就算定义了
process函数,若没有显式的调用语句,脚本运行时只会完成函数定义,不会执行函数内部的OCR逻辑,因此没有输出。
解决方法
修改脚本,添加命令行参数处理逻辑,让脚本能根据传入的参数调用对应函数:
from PIL import Image import pytesseract import sys # 配置tesseract可执行文件路径 pytesseract.pytesseract.tesseract_cmd = r'/opt/homebrew/bin/tesseract' def process(): # 原OCR逻辑封装到函数内 print(pytesseract.image_to_string(Image.open('receipt1.jpg'))) if __name__ == '__main__': # 判断命令行参数,触发对应函数 if len(sys.argv) > 1 and sys.argv[1] == 'process': process()
代码说明
- 导入
sys模块获取命令行参数列表sys.argv,其中sys.argv[0]是脚本文件名,sys.argv[1]是你传入的process参数。 if __name__ == '__main__':确保只有直接运行脚本时才执行参数判断逻辑,避免模块被导入时触发不必要的执行。- 当检测到第一个参数为
process时,调用process函数执行OCR任务。
内容的提问来源于stack exchange,提问作者reallymemorable
相关产品推荐
相关产品推荐

