Laravel8中调取腾讯云文字识别OCR

记录一下在Laravel8项目开发过程中调取腾讯云文字识别OCR

1.获取腾讯云开发秘钥

https://console.cloud.tencent.com/cam/capi

2.在项目env文件中配置SecretId和SecretKey

php 复制代码
# 腾讯云api
TENCENT_SECRET_ID = 腾讯云SecretId
TENCENT_SECRET_KEY = 腾讯云SecretKey

3.安装腾讯云OCR扩展

php 复制代码
composer require tencentcloud/ocr

在vendor扩展文件夹下可见新安装的扩展

4.查看腾讯云文字识别OCR文档,对照方法参数进行调取

https://cloud.tencent.com/document/product/866/33526#1.-.E6.8E.A5.E5.8F.A3.E6.8F.8F.E8.BF.B0

对照项目扩展文件夹

5.方法调取

php 复制代码
<?php
use TencentCloud\Common\Credential;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use TencentCloud\Ocr\V20181119\Models\GeneralAccurateOCRRequest;
use TencentCloud\Ocr\V20181119\OcrClient;

class IdentifyImageLogic extends Logic
{
	 /**
     * 文字识别
     * @param string $file_path 文件相对路径
     * @param string $imageBase64 图片base64转码
     * @return void
     */
    public function identifyImage(string $file_path = '', string $imageBase64 = '')
    {
        // 判断文件类型
        if ($file_path) {
            $local_path = storage_path("app/" . $file_path);
            $params = array(
                // 获取图片的base64加密内容
                'ImageBase64' => base64_encode(file_get_contents($local_path)),
            );
        } else if ($imageBase64) {
            $params = array(
                // 获取图片的base64加密内容
                'ImageBase64' => $imageBase64,
            );
        } else {
            return ['文件不存在', []];
        }

        // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
        // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的			    方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
        $SecretId = env('TENCENT_SECRET_ID');
        $SecretKey = env('TENCENT_SECRET_KEY');
        // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
        $cred = new Credential($SecretId, $SecretKey);
        // 实例化一个http选项,可选的,没有特殊需求可以跳过
        $httpProfile = new HttpProfile();
        $httpProfile->setEndpoint("ocr.tencentcloudapi.com");

        // 实例化一个client选项,可选的,没有特殊需求可以跳过
        $clientProfile = new ClientProfile();
        $clientProfile->setHttpProfile($httpProfile);
        // 实例化要请求产品的client对象,clientProfile是可选的
        $client = new OcrClient($cred, "", $clientProfile);

        // 实例化一个请求对象,每个接口都会对应一个request对象
        $req = new GeneralAccurateOCRRequest();

        $req->fromJsonString(json_encode($params));

        // 返回的resp是一个GeneralAccurateOCRResponse的实例,与请求对象对应
        $resp = $client->GeneralAccurateOCR($req);

        // 输出json格式的字符串回包
        $list = json_decode($resp->toJsonString())->TextDetections ?? [];

        $question_text = [];
        foreach ($list as $val) {
            $question_text[] = $val->DetectedText ?? '';
        }
        $question_text_str = implode(PHP_EOL, $question_text);
        return ['', ['question_text' => $question_text_str]];
    }
}

返回结果按照实际使用要求进行处理,这里只提取了文字部分并且使用换行符分隔。

php 复制代码
{
    "code": 200,
    "message": "操作成功",
    "data": {
        "question_text": "1.驾驶机动车在没有中心线的城市道路上,最高速度不能超过每小时\r\n多少公里?\r\nA. 30 B. 40\r\nC. 50\r\nD.70\r\n答案:A\r\n2.车辆在山区道路跟车行驶时,应怎样做?\r\nA.紧随前车之后\r\nB.适当加大安全距离\r\nC.适当减小安全距离\r\nD.尽可能寻找超车机会\r\n答案:B\r\n3.夜间驾驶机动车通过人行横道时需要交替使用远近光灯。\r\nA. 正确 B. 错误\r\n答案:A"
    },
    "timestamp": 1751504861779
}

6.扩展中还有其他方法根据实际使用需求进行方法调取


相关推荐
毕设源码-钟学长17 分钟前
【开题答辩全过程】以 基于PHP的动漫社区的设计与实现为例,包含答辩的问题和答案
开发语言·php
qq_411262421 小时前
短时间串口发送网络端怎么接收不到
开发语言·php
wxin_VXbishe1 小时前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·spring boot·python·spring·django·php
Funny_AI_LAB2 小时前
GLM-OCR发布:性能SOTA,超越PaddleOCR-VL-1.5?
人工智能·计算机视觉·语言模型·ocr
小邓睡不饱耶2 小时前
深度实战:Spark GraphX构建用户信任网络,精准锁定高价值目标用户(含完整案例)
大数据·spark·php
gaize12133 小时前
腾讯云高性价比GPU算力,开启AI时代
人工智能·腾讯云·gpu算力
杨超越luckly3 小时前
从传统 GIS 向智能/自动化脚本演进:地铁接驳公交识别的 ArcGIS 与 Python 双路径实践
开发语言·arcgis·php·交互·数据可视化
JoySSLLian3 小时前
OV SSL 证书:权威身份验证,让网络交互更可信
开发语言·网络·人工智能·网络协议·tcp/ip·php·ssl
JaguarJack4 小时前
Laravel AI SDK 正式发布
ai·php·laravel·服务端
码科智能14 小时前
OCR在真实场景“翻车”?面对跨页表格、密集表格、扭曲文档等难题,这个OCR文档解析工具太6了!
ocr