用PHP调用API ocr.space的cURL没有通过?

用PHP调用API ocr.space的cURL没有通过?,php,curl,Php,Curl,API: 我的代码: $imageurl = "https://...imageurl.jpg"; $data = array( "language" => "ger", "isOverlayRequired" => false, "detectOrientation" => true, "scale" => true, "filetype" => 'JPG', "url" => $imageurl,

API:

我的代码:

$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
尝试过了,但仍然存在同样的问题

任何人都能看到发生了什么

--

这篇C#post说必须读取并发布文件内容。但是,我非常确定
url
选项应该只接受url。

感谢您的帮助(请参阅评论)

问题是:

  • 不要使用
    json\u encode()
  • 将内容类型更改为
    内容类型:多部分/表单数据
  • “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;
}

该API似乎并不表示您应该将数据作为原始JSON发布。当您尝试导航到
$imageurl
时会发生什么?它可以公开访问吗?文档的键为
file
,但您有
url
。有意?在没有JSON的情况下将其发布为
CURLOPT_POSTFIELDS=>$data,
无法解决问题。是的,
$imageurl
是可公开访问的,我尝试了几个图像URL
url
是有意的,我也尝试过
base64Image
,但没有
file
。通过:
CURLOPT\u HTTPHEADER=>array('Content-Type:multipart/form data','apikey:MYAPIKEY'),
更接近解决方案,很好地隐藏在文档中:at“(a)通过url提供OCR格式的图像/PDF”。确实需要删除
json\u encode()
。此外,需要在引号内设置
false
true
值。@KaiNoack您是否也删除了相关的内容类型标题?我使用了您的方法,但没有显示任何内容。