PHP 调用微信小程序 OCR 接口

添加插件

在小程序后台 设置 - 第三方设置 - 插件管理 中添加 OCR支持 插件。

服务购买

微信OCR识别 | 微信服务平台 中购买接口配额。

免费版本目前配额为 100 次/日,可用 36500 天。

接入

如果是小程序前端接入,参考上方网页“接入文档”即可。

定义接口常量

1const OCR_BANKCARD = 'https://api.weixin.qq.com/cv/ocr/bankcard'; 2const OCR_BIZ_LICENSE = 'https://api.weixin.qq.com/cv/ocr/bizlicense'; 3const OCR_DRIVER_LICENSE = 'https://api.weixin.qq.com/cv/ocr/drivinglicense'; 4const OCR_ID_CARD = 'https://api.weixin.qq.com/cv/ocr/idcard'; 5const OCR_PRINTED_TEXT = 'https://api.weixin.qq.com/cv/ocr/comm'; 6const OCR_VEHICLE_LICENSE = 'https://api.weixin.qq.com/cv/ocr/driving';

CURL 接入

1/** 2 * @param string $api 3 * @param string $access_token 4 * @param UploadedFile|null $image UploadedFile 强制数据类型可删除或替换,该参数为已上传文件对象 5 * @param string|null $image_url 6 * 7 * @return array|null 8 */ 9public function imageOcr(string $api, string $access_token, ?UploadedFile $image = null, ?string $image_url = null): ?array { 10 if ((!$image && !$image_url)) { 11 return null; 12 } 13 14 $cFile = curl_file_create( 15 $image->getPathname(), 16 mime_content_type($image->getPathname()), 17 $image->getFilename() 18 ); 19 20 $ch = curl_init(); 21 curl_setopt_array($ch, [ 22 CURLOPT_URL => $api . '?' . http_build_query([ 23 'access_token' => $access_token, 24 'img_url' => $image_url 25 ]), 26 CURLOPT_POST => true, 27 CURLOPT_POSTFIELDS => [ 28 'img' => $cFile 29 ], 30 CURLOPT_RETURNTRANSFER => true 31 ]); 32 33 $response = curl_exec($ch); 34 curl_close($ch); 35 36 return json_decode($response, true); 37}

GuzzleHttp 客户端接入

1/** 2 * @param string $api 3 * @param string $access_token 4 * @param UploadedFile|null $image UploadedFile 强制数据类型可删除或替换,该参数为已上传文件对象 5 * @param string|null $image_url 6 * 7 * @return array|null 8 */ 9public function imageOcr(string $api, string $access_token, ?UploadedFile $image = null, ?string $image_url = null): ?array { 10 if ((!$image && !$image_url)) { 11 return null; 12 } 13 14 $response = (new \GuzzleHttp\Client())->post($api, [ 15 'query' => [ 16 'access_token' => $access_token, 17 'img_url' => $image_url 18 ], 19 'multipart' => [ 20 [ 21 'name' => 'img', 22 'contents' => file_get_contents($image->getPathname()), 23 'filename' => $image->getFilename() 24 ] 25 ] 26 ])->getBody(); 27 28 return json_decode($response, true); 29}

使用

假定 imageOcr 方法位于 WeChatOCR 类:

1$ocr = new WeChatOCR(); 2 3// 大多数框架中可以通过 $request->file('image') 的方式获得上传文件对象 4$ocr->imageOcr(WeChatOCR::OCR_PRINTED_TEXT, $request->file('image')); 5 6// Image URL 方式 7$ocr->imageOcr(WeChatOCR::OCR_ID_CARD, null, 'https://example.com/id_card.jpg');
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

微信小程序new Date()转换时间异常问题

微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT

SpringBoot自定义序列化的使用方式

场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x