PHP Azure OCR - 使用本地文件

标签 php azure post request ocr

我正在使用 Azure OCR 服务取回图像的文本( https://learn.microsoft.com/de-de/azure/cognitive-services/Computer-vision/QuickStarts/PHP )。

到目前为止,一切都已启动并运行,但现在我想使用本地文件而不是已上传的文件。

$url->setQueryVariables($parameters);
$request->setMethod(HTTP_Request2::METHOD_POST);
// Request body
$request->setBody("{body}");  // Replace with the body, for example, "{"url": "http://www.example.com/images/image.jpg"}

不幸的是,我不知道如何将原始二进制文件作为 PHP 中 POST 请求的正文传递。

最佳答案

首先,当我们引用本地文件时,我们应该在 header 中使用 'Content-Type': 'application/octet-stream' ,然后我们可以发送使用流资源的请求 body 。

这是我使用 Guzzle 的工作代码供您引用:

<?php

require 'vendor/autoload.php';

$resource = fopen('./Shaki_waterfall.jpg', 'r');

$client = new \GuzzleHttp\Client();    
$res = $client->request('POST', 'https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze', [
    'query' => [
        'visualFeatures' => 'Categories',
        'details' => '',
        'language' => 'en'
    ],
    'headers' => [
        'Content-Type' => 'application/octet-stream',
        'Ocp-Apim-Subscription-Key' => '<Ocp-Apim-Subscription-Key>'
    ],
    'body' => $resource 
]);

echo $res->getBody();

使用 HTTP_Request2 :

<?php

require_once 'HTTP/Request2.php';

$request = new Http_Request2('https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze');
$url = $request->getUrl();

$headers = array(
    'Content-Type' => 'application/octet-stream',
    'Ocp-Apim-Subscription-Key' => '<Ocp-Apim-Subscription-Key>',
);
$request->setHeader($headers);

$parameters = array(
    'visualFeatures' => 'Categories',
    'details' => '',
    'language' => 'en',
);
$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setBody(fopen('./Shaki_waterfall.jpg', 'r'));  

try {
    $response = $request->send();
    echo $response->getBody();

} catch (HttpException $ex) {
    echo $ex;
}

关于PHP Azure OCR - 使用本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46075366/

相关文章:

javascript - 如何使用 jQuery 通过 ajax 调用 php 类方法但不需要任何 php 处理程序文件

javascript - 在 onsubmit 代码之后提交表单操作时不遵循

php - 检查 MySQL 数据库中是否存在电子邮件时出错?

php - 我的 PHP 代码不工作

azure - 如何使用azure将数据加载到sql接收器中?

python - 在 Blob 存储中创建文件夹层次结构时生成意外链接

javascript - bcrypt.compareSync 不适用于 Sequelize

javascript - 向新的 Google Analytics V4 API 发出 Ajax POST 请求

phpMyAdmin mbstring 错误

python - 在 Azure Functions 应用程序中存储身份验证 token