代码之家  ›  专栏  ›  技术社区  ›  Avatar

对API的cURL调用ocr.空间PHP没有通过?

  •  1
  • Avatar  · 技术社区  · 8 年前

    应用程序编程接口: https://ocr.space/ocrapi#curl

    我的代码:

    $imageurl = "https://...imageurl.jpg";
    
    $data = array(
        "language" => "ger",
        "isOverlayRequired" => false,
        "detectOrientation" => true,
        "scale" => true,
        "filetype" => 'JPG',
        "url" => $imageurl,
        // "base64Image" => "data:image/jpeg;base64,".base64_encode( file_get_contents($imageurl) ),
    );
    
    $ch = curl_init();
    
    curl_setopt_array($ch, array(
        CURLOPT_URL => "https://api.ocr.space/parse/image",
        CURLOPT_RETURNTRANSFER => true, // receive server response
        CURLOPT_POST => 1, // do post
        CURLOPT_HTTPHEADER => array('Content-Type:application/json', 'apikey:MYAPIKEY'),
        CURLOPT_POSTFIELDS => json_encode($data),
    ));
    
    $result = curl_exec($ch);
    
    curl_close($ch);
    
    $result_array = json_decode($result);
    
    if(!empty($result_array->ErrorMessage))
    {
        // catch errors https://docs.mathpix.com/#errors
        echo 'Problem: '.$result_array->ErrorMessage[0];
    }
    

    总是导致:

    问题:没有上传文件,也没有提供URL或base64

    我试过了 url 和 base64Image ,但还是同样的问题。

    --

    "No file uploaded or URL provided" when calling ocr.space API 表示必须读取和发布文件内容。不过,我很确定 网址

    1 回复  |  直到 8 年前
        1
  •  0
  •   Avatar    8 年前

    谢谢你的帮助(见评论)。

    问题是:

    • 请勿使用 json_encode()
    • 将内容类型更改为 Content-Type:multipart/form-data
    • "false" 和 "true"

    现在可以使用:

    $imageurl = "https://...imageurl.jpg";
    
    $data = array(
        "language" => "ger",
        "isOverlayRequired" => "false",
        "detectOrientation" => "true",
        "scale" => "true",
        "filetype" => 'JPG',
        "url" => $imageurl,
    );
    
    $ch = curl_init();
    
    curl_setopt_array($ch, array(
        CURLOPT_URL => "https://api.ocr.space/parse/image",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => 1,
        CURLOPT_HTTPHEADER => array('Content-Type:multipart/form-data', 'apikey:apikey:MYAPIKEY'),
        CURLOPT_POSTFIELDS => $data,
    ));
    
    $result = curl_exec($ch);
    
    curl_close($ch);
    
    $result_array = json_decode($result);
    
    if(!empty($result_array->ErrorMessage))
    {
        // catch errors https://docs.mathpix.com/#errors
        echo 'Problem: '.$result_array->ErrorMessage[0];
    }
    else 
    {
        // recognized text
        $ocrresult = $result_array->ParsedResults[0]->ParsedText;
    }
    
    推荐文章