开发者社区 > 视觉智能 > 文字识别 > 正文

php 用body参数去检测的话是要穿什么参数呢?

php 用body参数去检测的话是要穿什么参数呢?

展开
收起
真的很搞笑 2023-04-19 07:56:44 225 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    使用 PHP 调用阿里云印刷文字识别服务,通过 HTTP POST 请求传递图像数据时,需要将图像数据转化为 Base64 编码格式,并将其作为 body 参数传递给 OCR API 接口。

    下面是使用 PHP 发起阿里云印刷文字识别服务请求的示例代码,其中将图像文件读取为 Base64 编码的字符串,并通过 https://ocr.cn-shanghai.aliyuncs.com/ 接口地址发起 HTTP POST 请求,检测图像中的文字:

    <?php
    
    // 设置阿里云 API 访问密钥
    $accessKeyId = '<Your Access Key ID>';
    $accessKeySecret = '<Your Access Key Secret>';
    
    // 设置 OCR API 请求参数
    $params = array(
        'RegionId' => 'cn-shanghai',
        'Version' => '2019-12-30',
        'Method' => 'POST',
        'Action' => 'RecognizePrintedText',
        'Format' => 'JSON',
        'ImageURL' => '',
        'ImageUrl' => '',
        'OCRType' => 'normal',
        'OutputFileFormat' => 'normal',
        'MinHeight' => '',
        'MaxHeight' => '',
        'ReturnType' => '',
        'ProjectId' => '',
        'Side' => '',
        'WatermarkImageURL' => '',
        'Watermark' => '',
    );
    
    // 读取图像文件
    $filename = 'path/to/image.jpg';
    $imageData = base64_encode(file_get_contents($filename));
    
    // 设置 HTTP POST 请求参数
    $requestParams = array(
        'http' => array(
            'method' => 'POST',
            'header' => array(
                'Content-Type: application/json; charset=utf-8',
                'Authorization: ACS '.$accessKeyId.':'
                    .signature($params, $accessKeySecret),
            ),
            'content' => json_encode(array(
                'ImageType' => 'Base64',
                'Image' => $imageData,
                'Url' => '',
                'Height' => '',
                'Width' => '',
            )),
        ),
    );
    
    // 发起 HTTP POST 请求
    $response = file_get_contents(
        'https://ocr.'.strtolower($params['RegionId'])
        .'.aliyuncs.com/', false, stream_context_create($requestParams));
    
    // 输出识别结果
    echo $response;
    
    // 计算阿里云 API 访问秘钥签名
    function signature($params, $accessKeySecret) {
        ksort($params);
        $strToSign = 'POST&%2F&'
            .rawurlencode(http_build_query($params, null, '&',
                PHP_QUERY_RFC3986));
        return base64_encode(hash_hmac('sha1', $strToSign, $accessKeySecret.'&',
            true));
    }
    

    需要注意的是,OCR API 的请求参数中,ImageURL 和 ImageUrl、Height 和 Width 参数不可以同时出现。如果是通过本地图像上传识别的方式,需要在请求内容中加入 ImageType 和 Image 参数,使用 Base64 编码,ImageType 参数值为 Base64。

    在以上代码中,可以将要检测的图像数据读取到 $imageData 变量中,然后将其 Base64 编码后与其他参数一起放在 HTTP POST 请求的请求体中的 content 字段里面。同时,根据 API 文档中要求,还需要在 HTTP POST 请求头里面设置 Content-Type 为 application/json,并在 Authorization 中加入阿里云 API 访问秘钥签名。

    2023-04-30 16:29:12
    赞同 展开评论 打赏
  • 用例子中的StreamUtil::readFromFilePath 报错 Invalid resource type: array,此回答整理自钉群“【官方】阿里云OCR公共云客户交流群”

    2023-04-19 11:41:03
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    在 PHP 中,使用 HTTP 请求的 body 参数进行检测时,需要传入相应的请求体数据。具体传入什么参数需要根据你要检测的内容来决定,通常情况下需要传入以下参数:

    请求方法:例如 GET、POST、PUT 等。 请求 URL:包括主机名、路径、查询参数等。 请求头部:例如 User-Agent、Content-Type、Authorization 等。 请求体:例如表单数据、JSON 数据、XML 数据等。 具体需要传入哪些参数,可以根据接口文档或接口规范来确认。在 PHP 中,可以使用 $_POST、$_GET、$_PUT、$_DELETE 等变量来获取请求参数。如果请求体是 JSON 数据,可以使用 file_get_contents('php://input') 获取请求体数据,并使用 json_decode() 函数将其解析为 PHP 对象或数组。

    2023-04-19 10:33:30
    赞同 展开评论 打赏

文字识别技术可以灵活应用于证件文字识别、发票文字识别、文档识别与整理等行业场景,满足认证、鉴权、票据流转审核等业务需求。

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载