使用 PHP 的 Microsoft OCR API

问题描述 投票:0回答:1

我对 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 api ocr azure-cognitive-services
1个回答
0
投票

您可以尝试下面的脚本吗?不幸的是,我没有订阅密钥,所以无法测试它。如果它不适合您,请告诉我。

<?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;

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.