PHP 调用微信小程序 OCR 接口

MaxSky 等级 280 0 0

添加插件

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

服务购买

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

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

接入

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

定义接口常量

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

CURL 接入

/**
 * @param string            $api
 * @param string            $access_token
 * @param UploadedFile|null $image UploadedFile 强制数据类型可删除或替换,该参数为已上传文件对象
 * @param string|null       $image_url
 *
 * @return array|null
 */
public function imageOcr(string $api, string $access_token, ?UploadedFile $image = null, ?string $image_url = null): ?array {
    if ((!$image && !$image_url)) {
        return null;
    }

    $cFile = curl_file_create(
        $image->getPathname(),
        mime_content_type($image->getPathname()),
        $image->getFilename()
    );

    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $api . '?' . http_build_query([
                'access_token' => $access_token,
                'img_url' => $image_url
            ]),
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => [
            'img' => $cFile
        ],
        CURLOPT_RETURNTRANSFER => true
    ]);

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

GuzzleHttp 客户端接入

/**
 * @param string            $api
 * @param string            $access_token
 * @param UploadedFile|null $image UploadedFile 强制数据类型可删除或替换,该参数为已上传文件对象
 * @param string|null       $image_url
 *
 * @return array|null
 */
public function imageOcr(string $api, string $access_token, ?UploadedFile $image = null, ?string $image_url = null): ?array {
    if ((!$image && !$image_url)) {
        return null;
    }

    $response = (new \GuzzleHttp\Client())->post($api, [
        'query' => [
            'access_token' => $access_token,
            'img_url' => $image_url
        ],
        'multipart' => [
            [
                'name' => 'img',
                'contents' => file_get_contents($image->getPathname()),
                'filename' => $image->getFilename()
            ]
        ]
    ])->getBody();

    return json_decode($response, true);
}

使用

假定 imageOcr 方法位于 WeChatOCR 类:

$ocr = new WeChatOCR();

// 大多数框架中可以通过 $request->file('image') 的方式获得上传文件对象
$ocr->imageOcr(WeChatOCR::OCR_PRINTED_TEXT, $request->file('image'));

// Image URL 方式
$ocr->imageOcr(WeChatOCR::OCR_ID_CARD, null, 'https://example.com/id_card.jpg');
收藏
评论区

相关推荐

微信小程序支付功能全流程实践
前言 微信小程序为电商类小程序,提供了非常完善、优秀、安全的支付功能。在小程序内可调用微信的API完成支付功能,方便、快捷。小程序开发者在开发小程序时,支付流程是必然要接触到,今天胡哥就小程序支付的全流程为大家一一细说,让小伙伴能快速得掌握小程序支付能力,避免踩坑! 知己知彼,方能百战不殆 小程序支付流程图 小程序支付交互流程图(https:/
微信小程序modal
首先创建一个组件component,组件命名可以为modal modal.wxml的内容为 <view class'modalmask' wx:if'{{show}}' bindtap'clickMask' <view class'modalcontent' <scrollview scrolly class'mainc
微信小程序wxml使用substring
首先创建subutils.wxs文件 var sub function (val, start0, end17) { if (val.length 0 || val undefined) { return } if (val.length end) { return val.substring(start
微信小程序轮播图
实现效果 wxml代码 <view style"height:20rpx;"</view <view class"swiper"
微信小程序苹果机wx.showModal()
最近做项目中,发现使用wx.showModal()苹果机出现取消文字不显示问题,纠正后显示正确 wx.showModal({ title: '提示', content:'登录后体验更多功能' }) wx.showModal({ cancelText: '取消', confi
微信小程序部分api 会触发 onShow onHide
解决部分api触发小程序 onShow onHide 首先要明白 微信小程序的 onShow() onHide()分为页面级的和应用级的,应用级的就是app.js里面的那几个,页面级的就是pages里的 当使用了下列api时,均会触发页面级和应用级的onShow onHide 1. 点击右上角小圆点关闭小程序。 2. 图片预览:wx.preview
微信小程序 - 路由实践
欢迎来到我博客阅读:1\. 前言在微信小程序由一个 App()实例,和众多Page()组成。而在小程序中所有页面的路由全部由框架进行管理,框架以栈的形式维护了所有页面,然后提供了以下 API 来进行路由之间的跳转:1. wx.navigateTo2. wx.redirectTo3. wx.navigateBack4.
微信小程序 - 引入字体图标
网站图标要想做到清晰无锯齿,使用普通图片或者雪碧图都很难达到这个目的,一般我们都会引入字体图标(svg转font,使用图标像使用字体一样,详见《web页面使用字体图标》,那么如何在微信小程序中使用自定义图标呢?请看详细步骤:1、从上选择喜欢的图标加入购物车,在购物车弹窗中点击“下载代码”后,解压阿里图库 加入购物车购物车 下载代码图标文件内容2.、进入导入第
Vue和微信小程序的区别
_写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别。_一、生命周期先贴两张图: vue生命周期 小程序生命周期相比之下,小程序的钩子函数要简单得多。vue的钩子函数在跳转新页面时,钩子函数都会触发,但是小程序的钩子函数,页面不同的跳转方式,触发的钩子并不一样。 onLoad
推荐几个微信小程序开发小技巧
前段时间在下开发了个微信小程序,开发过程中总结了一些我觉得对我有用的小技巧,提炼出来,相当于一个总结复盘,也希望可以帮助到大家。如果对大家确实有帮助,别忘了点赞哦 🌟 ~1\. 开发中可能遇到的坑以及 Tips本来想写个小技巧的,结果我总结了一堆坑,没上手之前完全想象不到微信小程序的开发体验是如此之差、如此之烂,从微信
微信小程序 - 生命周期篇
为什么需要掌握小程序的生命周期当你的领导张小三给你说: 这个请求应该在应用启动的时候发起呢 页面跳转的时候就要取消异步任务哦 应用隐藏的时候记得关闭一下定时器哈那时候的你会一脸懵逼和不知所措还无从下手吗综上所述:我们理所当然的要对微信小程序的生命周期做到滚瓜烂熟,只有这样才能让领
计划助手V1.0-微信小程序(QQ小程序)-源代码分享
疫情期间在家感觉好无聊啊,于是利用空闲时间做了一个用来记录和管理小目标时间的小程序,命名为《小沙漏》。 QQ版本小程序同步上线,QQ小程序叫《时间小沙漏》,欢迎大家前来体验,后期也会添加其他的新功能哦 【区别】:微信小程序的代码与QQ小程序的源码是不一样的。 微信小程序的源码基于微信小程序云开发,需要在有网络的情况下使用,具有同步功能,所有记录在删除小
PHP 调用微信小程序 OCR 接口
添加插件在小程序后台 设置 第三方设置 插件管理 中添加 OCR支持 插件。 服务购买在 中购买接口配额。 免费版本目前配额为 100 次/日,可用 36500 天。 接入如果是小程序前端接入,参考上方网页“接入文档”即可。 定义接口常量phpconst OCRBANKCARD 'https://api.weixin.qq.com/cv/ocr
微信小程序体验composition-api(类似vue3)
微信小程序compositionapi用该是什么样子? 使用使用起来应该像是这个样子wxue(options) setup配置应该是包含一个setup选项是一个函数,返回的函数可以this.xxx调用,返回的数据可以this.data.xxx用到,如下import wxue, reactive from 'wxue'wxue( setup(option
轻松识别文字,这款Python OCR库支持超过80种语言
OCR是什么?有一款软件叫扫描全能王,想必一些小伙伴听过,这是一个OCR集成软件,可以将图像内容扫描成文字。所以说,OCR作用是对文本资料的图像文件进行分析识别处理,获取文字及版面信息。OCR的全称叫作“Optical Character Recognition”,即光学字符识别。这算是生活里最常见、最有用的AI应用技术之一。细心观察便可发现,身边到处都是O