使用PHP SDK图片OCR接口识别图片中的文字或卡证信息,并同步返回识别出来的结果。
说明 通用OCR除了能够识别除了普通图片中的文字,还能识别结构化的卡证上的文字,具体请参考图片OCR检测API说明。
准备工作
在进行具体的服务调用之前,请参考以下步骤,完整准备工作:
- 创建阿里云AccessKeyId和AccessKeySecret。具体请参考创建AccessKey。
- 安装PHP依赖。具体请参考安装PHP依赖。
传图片url检测示例代码
以下示例针对互联网图片链接进行身份证信息识别:
<?php
require_once 'aliyuncs/aliyun-oss-php-sdk/autoload.php';
include_once 'aliyuncs/aliyun-php-sdk-core/Config.php';
use Green\Request\V20180509 as Green;
//请替换成您的accessKeyId、accessKeySecret
$iClientProfile = DefaultProfile::getProfile("cn-shanghai", "您自己的AccessKeyId", "您自己的AccessKeySecret");
DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
$client = new DefaultAcsClient($iClientProfile);
$request = new Green\ImageSyncScanRequest();
$request->setMethod("POST");
$request->setAcceptFormat("JSON");
$task1 = array('dataId' => uniqid(),
'url' => 'https://身份证图片.jpg'
);
$extras = array('card' => 'id-card-front');
// 设置待检测图片, 一张图片一个task,
// 多张图片同时检测时,处理的时间由最后一个处理完的图片决定。
// 通常情况下批量检测的平均rt比单张检测的要长, 一次批量提交的图片数越多,rt被拉长的概率越高
// 这里以单张图片检测作为示例, 如果是批量图片检测,请自行构建多个task
// ocr检测按照实际检测的图片张数×检测的卡证类型单价计费
$request->setContent(json_encode(array(
"tasks" => array($task1),
"scenes" => array("ocr"),
"extras" => array($extras)
)));
try {
$response = $client->getAcsResponse($request);
# print_r($response);
if(200 == $response->code){
$taskResults = $response->data;
foreach ($taskResults as $taskResult) {
if (200 == $taskResult->code) {
$sceneResults = $taskResult->results;
print_r($sceneResults);
}
}
}else{
print_r("detect not success. code:" + $response->code);
}
} catch (Exception $e) {
print_r($e);
}
图片文件检测示例代码
以下示例针对本地图片文件进行身份证信息识别:
<?php
require_once 'aliyuncs/aliyun-oss-php-sdk/autoload.php';
include_once 'aliyuncs/aliyun-php-sdk-core/Config.php';
use Green\Request\V20180509 as Green;
use Green\Request\Extension\ClientUploader;
//请替换成您的accessKeyId、accessKeySecret
$iClientProfile = DefaultProfile::getProfile("cn-shanghai", "您自己的AccessKeyId", "您自己的AccessKeySecret");
DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
$client = new DefaultAcsClient($iClientProfile);
$request = new Green\ImageSyncScanRequest();
$request->setMethod("POST");
$request->setAcceptFormat("JSON");
$uploader = ClientUploader::getImageClientUploader($client);
$url = $uploader->uploadFile("d:/身份证图片.png");
$task1 = array('dataId' => uniqid(),
'url' => $url
);
$extras = array('card' => 'id-card-front');
// 设置待检测图片, 一张图片一个task,
// 多张图片同时检测时,处理的时间由最后一个处理完的图片决定。
// 通常情况下批量检测的平均rt比单张检测的要长, 一次批量提交的图片数越多,rt被拉长的概率越高
// 这里以单张图片检测作为示例, 如果是批量图片检测,请自行构建多个task
// ocr检测按照实际检测的图片张数×检测的卡证类型单价计费
$request->setContent(json_encode(array(
"tasks" => array($task1),
"scenes" => array("ocr"),
"extras" => array($extras)
)));
try {
$response = $client->getAcsResponse($request);
# print_r($response);
if(200 == $response->code){
$taskResults = $response->data;
foreach ($taskResults as $taskResult) {
if (200 == $taskResult->code) {
$sceneResults = $taskResult->results;
print_r($sceneResults);
}
}
}else{
print_r("detect not success. code:" + $response->code);
}
} catch (Exception $e) {
print_r($e);
}
图片二进制数据检测示例代码
以下示例针对二进制图片字节数组数据进行身份证信息识别:
<?php
require_once 'aliyuncs/aliyun-oss-php-sdk/autoload.php';
include_once 'aliyuncs/aliyun-php-sdk-core/Config.php';
use Green\Request\V20180509 as Green;
use Green\Request\Extension\ClientUploader;
//请替换成您的accessKeyId、accessKeySecret
$iClientProfile = DefaultProfile::getProfile("cn-shanghai", "您自己的AccessKeyId", "您自己的AccessKeySecret");
DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
$client = new DefaultAcsClient($iClientProfile);
$request = new Green\ImageSyncScanRequest();
$request->setMethod("POST");
$request->setAcceptFormat("JSON");
$bytes = file_get_contents("d:/身份证图片.jpg");
$url = $uploader->uploadBytes($bytes);
$task1 = array('dataId' => uniqid(),
'url' => $url
);
$extras = array('card' => 'id-card-front');
// 设置待检测图片, 一张图片一个task,
// 多张图片同时检测时,处理的时间由最后一个处理完的图片决定。
// 通常情况下批量检测的平均rt比单张检测的要长, 一次批量提交的图片数越多,rt被拉长的概率越高
// 这里以单张图片检测作为示例, 如果是批量图片检测,请自行构建多个task
// ocr检测按照实际检测的图片张数×检测的卡证类型单价计费
$request->setContent(json_encode(array(
"tasks" => array($task1),
"scenes" => array("ocr"),
"extras" => array($extras)
)));
try {
$response = $client->getAcsResponse($request);
# print_r($response);
if(200 == $response->code){
$taskResults = $response->data;
foreach ($taskResults as $taskResult) {
if (200 == $taskResult->code) {
$sceneResults = $taskResult->results;
print_r($sceneResults);
}
}
}else{
print_r("detect not success. code:" + $response->code);
}
} catch (Exception $e) {
print_r($e);
}
在文档使用中是否遇到以下问题
更多建议
匿名提交