我对 PHP 相当陌生,我正在尝试使用 Microsoft OCR API。我已经有了我的密钥,并且它正在工作,正如我在这里测试的那样:https://brazilsouth.dev.cognitive.microsoft.com/docs/services/unified-vision-apis-public-preview-2023-04-01-预览/操作/61d65934cd35050c20f73ab6/控制台.
所以我想做的是发出 PHP API 请求。我无法安装任何库来执行此操作,因为这是我正在做的事情的要求。所以我尝试使用 CURL,由于我是 PHP 新手,不知道这是否是最好的方法,也不知道它有什么问题。
这是我的代码:
<?php
class Computer_Vision{
public function __construct(){
$this->azure_ocr="https://brazilsouth.api.cognitive.microsoft.com/computervision/imageanalysis:analyze?api-version=2023-04-01-preview&features=read&language=pt HTTP/1.1";
$this->subscription_key="blahblahblah";
}
public function recognize($image_url){
$data = array("url" => $image_url);
$azure_url = $this->azure_ocr;
print($azure_url . "<br/>");
$key=$this->subscription_key;
$data_string = json_encode($data);
print($data_string . "<br/>");
$curl = curl_init($azure_url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Ocp-Apim-Subscription-Key:'.$key
));
$response = curl_exec($curl);
print("response: " . $response . "<br/>");
if(curl_error($curl)) {
print('error:' . curl_error($curl));
} else {
$json_object = json_decode($response, true);
print("json_object: " . $json_object);
}
curl_close($curl);
}
}
?>
在我的index.php 上我有:
<?php
$azure = new Computer_Vision();
$image_url = "https://portal.vision.cognitive.azure.com/dist/assets/OCR1-6dda571d.jpg";
$ocr = $azure->recognize($image_url, "ocr");
?>
上面的代码没有给我任何错误(至少它没有进入curl_error条件),但它给了我一个空的响应
最好的方法是什么?我做错了什么?非常感谢任何帮助。
您可以尝试下面的脚本吗?不幸的是,我没有订阅密钥,所以无法测试它。如果它不适合您,请告诉我。
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://brazilsouth.api.cognitive.microsoft.com/computervision/imageanalysis:analyze?api-version=2023-04-01-preview&language=en&gender-neutral-caption=False',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"url": "https://portal.vision.cognitive.azure.com/dist/assets/OCR1-6dda571d.jpg"
}',
CURLOPT_HTTPHEADER => array(
'Ocp-Apim-Subscription-Key: 123456',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
希望有帮助。