当前位置: 首页 > news >正文

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

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

1.获取腾讯云开发秘钥

https://console.cloud.tencent.com/cam/capi
在这里插入图片描述

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

# 腾讯云api
TENCENT_SECRET_ID = 腾讯云SecretId
TENCENT_SECRET_KEY = 腾讯云SecretKey

3.安装腾讯云OCR扩展

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
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]];}
}

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

{"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.扩展中还有其他方法根据实际使用需求进行方法调取

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/265547.html

相关文章:

  • 中文语境下的视频生成革命:百度 MuseSteamer 的“产品级落地”启示录
  • 手机内存融合是什么意思
  • Redis 的特性、工作机制与性能优化全解(含搭建实战教程)
  • 用 vLLM 在两张 RTX 3090 上部署 Qwen2.5-14B BF16全量大模型的完整过程
  • 替换springboot打好jar包中的class文件
  • Python 异步爬虫(aiohttp)高效抓取新闻数据
  • 前端开发中的 Base64 图片革命:从链接到嵌入的性能优化
  • Go爬虫实时性能监控方案
  • 利用人名语言分类案例演示RNN、LSTM和GRU的区别(基于PyTorch)
  • 【学习线路】机器学习线路概述与内容关键点说明
  • git 中删除提交历史
  • 闲庭信步使用SV搭建图像测试平台:第二十七课——图像的腐蚀
  • Windows DOS CMD 100
  • PostgreSQL-XL之 序列(Sequence)
  • 深度学习2(逻辑回归+损失函数+梯度下降)
  • 基于Spring Boot + MyBatis-Plus + Thymeleaf的评论管理系统深度解析
  • Spring Boot + Screw 一键生成数据库设计文档
  • GitHub 解码指南:用 AI 赋能,五步快速掌握任意开源项目
  • WordPress 站点漏洞利用:数据库恶意注入与多重感染的案例分析
  • 大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
  • 如何在Jupyter notebook中删除内核以及添加内核
  • 大数据救公益:数字时代下的社会力量如何玩转“数据+善意”
  • CSS之基础语法一文全解析
  • 大语言模型(LLM)按架构分类
  • 小黑黑日常积累大模型prompt句式2:【以段落的形式输出,不分点列举】【如果没有相关内容则不输出】【可读性强】【输出格式规范】
  • 音视频会议服务搭建(设计方案-Go服务端API业务逻辑流程图)-04
  • js随机生成一个颜色
  • Python 机器学习核心入门与实战进阶 Day 1 - 分类 vs 回归
  • 【Linux】Rocky Linux 安装 Jenkins
  • Jenkins 构建过程常见错误