You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

封装到函数中的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:15:39