PHP 示例

请求并返回结果

示例代码

/**
* 获取图片base64数据
* @param ImageFile String 图片路径
* @return base64数据
*/
function Base64EncodeImage($ImageFile) {
    if(file_exists($ImageFile) || is_file($ImageFile)){
        $base64_image = '';
        $image_data = fread(fopen($ImageFile, 'r'), filesize($ImageFile));
        $base64_image = base64_encode($image_data);
        return $base64_image;
    } else {
        return '';
    }
}

/**
 * 发送post请求
 * @param string $url 请求地址
 * @param array $post_data post键值对数据
 * @return string
 */
function send_post($url, $post_data) {
  $postdata = http_build_query($post_data);
  $options = array(
    'http' => array(
      'method' => 'POST',
      'header' => 'Content-type: application/x-www-form-urlencoded',
      'content' => $postdata,
      'timeout' => 30
    )
  );
  $context = stream_context_create($options);
  $result = file_get_contents($url, false, $context);
  return $result;
}


// 获取图片base64位数据
$picdata = Base64EncodeImage('getverifyimage.png'); // 请替换成目标图片路径
$post_data = array(
  'username' => 'admin',
  'password' => '123456',
  'captchaType' => 1000,
  'captchaData' => $picdata
);
$result = send_post('http://www.bingtop.com/ocr/upload/', $post_data);
// 返回值示例{"code":0, "message":"", "data":{"captchaId":"1000-158201918112812","recognition":"RESULT"}}
echo $result

请求参数

{
    "username":"admin",
    "password":"123456",
    "captchaData":"/9j/4AAQ...示例省略若干位(图片文件内容的base64结果)...==",
    "captchaType":1000
}
  • username:注册用户名
  • password:登录密码
  • captchaData:图片文件内容,base64后的数据
  • captchaType:识别类型(整形),,请查阅识别分类

响应数据

{"code":0, "message":"", "data":{"captchaId":"1000-158201918112812","recognition":"RESULT"}}
  • code:统一错误返回
  • message:统一错误信息返回,正常为空
  • data->captchaId:识别ID(非数字格式,预留40字节字符串长度)
  • data->recognition:识别结果

提示

  • 简单图,英文字母、数字直接返回。全部大写化处理。
  • 中文图,可能返回中文 或者返回 JSON标准的unicode u4e2du6587 ,需要接入方使用标准JSON解析库自动处理。
  • 坐标图,返回 | 和 , 分割的相对图片左上角像素坐标, 100,102|200,202
  • 核心提示
    • 获取结果接口为长连接阻塞式,不需要轮询获取结果。此接口为长连接阻塞模式。正常情况下,此接口会阻塞HTTP请求,直至有识别结果返回。所以接入方发起HTTP请求时, 应当 将此接口的超时时间设置为 60秒 。
    • 为了防止网络问题导致长连接断开。接入方客户端应当在此接口没有返回任何 HTTP状态码 时(即网络故障),跳过本条,下次请求随机间隔 0.2 ~ 1.5 秒。
    • 如遇任何错误,例如用户密码错误、点数不足,重新上传时,必须间隔3秒以上,防止无意义的重试。否则服务器会认为恶意攻击封禁IP。