You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python调用ocr.space API无报错但不打印内容的问题排查

解决OCR.space API调用后无打印输出的问题

咱们来一步步拆解你的代码问题,以及对应的修复方案:

问题根源

  1. 调用的函数无打印逻辑:你运行的ocr_space_file函数只是把API返回的内容解码成字符串后返回,但你没有对这个返回值做任何打印操作,自然看不到输出。
  2. 未使用的函数存在错误:你的ocr_space_url函数里有明显问题——里面的r变量根本没定义(这个函数甚至没发送请求),而且你也没调用这个函数,所以它里面的打印代码完全不会执行。

修复方案

我们可以修改ocr_space_file函数,让它返回解析后的JSON对象,然后在调用后处理结果并打印识别文本,同时增加错误处理避免崩溃:

import requests
import json

def ocr_space_file(filename, overlay=False, api_key='2fe3ae129e88957', language='eng'):
    """
    OCR.space API request with local file.
    Python3.5 - not tested on 2.7
    :param filename: Your file path & name.
    :param overlay: Is OCR.space overlay required in your response. Defaults to False.
    :param api_key: Your API key, defaults to the provided one.
    :param language: Language code to be used in OCR. Defaults to 'eng'.
    :return: Parsed JSON result.
    """
    payload = {'isOverlayRequired': overlay,
               'apikey': api_key,
               'language': language,
               }
    with open(filename, 'rb') as f:
        r = requests.post('https://api.ocr.space/parse/image',
                          files={filename: f},
                          data=payload,
                          )
    # 把返回的字符串解析成JSON对象,方便后续处理
    return json.loads(r.content.decode())

# 调用函数并处理返回结果
ocr_result = ocr_space_file(filename='example_image.png', language='eng')

# 先检查API是否处理成功,再打印结果
if not ocr_result.get("IsErroredOnProcessing"):
    # 提取识别到的文本并打印
    parsed_text = ocr_result["ParsedResults"][0]["ParsedText"]
    print("识别到的文本内容:")
    print(parsed_text)
else:
    # 如果出错,打印错误信息
    error_msg = ocr_result.get('ErrorMessage', '发生未知错误')
    print(f"识别失败:{error_msg}")

关键修改点

  • ocr_space_file的返回值从字符串改成了解析后的JSON对象,方便后续提取数据。
  • 调用函数后增加了错误判断,避免因API调用失败(比如图片无效、API key错误)导致代码崩溃。
  • 明确添加了打印识别文本的逻辑,这样就能看到输出了。

如果你需要使用URL识别图片的功能,也要修复ocr_space_url函数(补全请求逻辑),示例如下:

def ocr_space_url(url, overlay=False, api_key='2fe3ae129e88957', language='eng'):
    """
    OCR.space API request with remote file.
    Python3.5 - not tested on 2.7
    :param url: Image url.
    :param overlay: Is OCR.space overlay required in your response. Defaults to False.
    :param api_key: Your API key, defaults to the provided one.
    :param language: Language code to be used in OCR. Defaults to 'eng'.
    :return: Parsed JSON result.
    """
    payload = {'url': url,
               'isOverlayRequired': overlay,
               'apikey': api_key,
               'language': language,
               }
    # 补全POST请求逻辑
    r = requests.post('https://api.ocr.space/parse/image', data=payload)
    return json.loads(r.content.decode())

# 调用示例(取消注释即可使用)
# url_result = ocr_space_url(url='你的图片URL', language='eng')
# if not url_result.get("IsErroredOnProcessing"):
#     print(url_result["ParsedResults"][0]["ParsedText"])

内容的提问来源于stack exchange,提问作者johnnyo1012

火山引擎 最新活动