thinkphp5对接阿里云ocr试卷切题
thinkphp5对接阿里云ocr试卷切题
提示:切题使用的是api:RecognizeEduPaperCut
以下是基于 ThinkPHP5.14 框架调用阿里云 RecognizeEduPaperCut 接口的详细实现步骤和代码示例。
文章目录
- thinkphp5对接阿里云ocr试卷切题
- 前言
- 1、前置准备
- 2、 配置文件
- 3、控制器直接引用使用
- 4、返回参数处理
- 5、其他相关教育识别接口
- RecognizeEduPaperStruct
- 7、关于费用
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
1、前置准备
在开始开发之前,请确保完成以下准备工作:
1、开通服务:在阿里云控制台开通教育场景识别服务,并购买相关资源包。
2、获取凭证:获取阿里云 AccessKey ID 和 AccessKeySecret,用于接口调用的身份验证。
3、安装依赖:通过 Composer 安装阿里云 SDK。运行以下命令安装:
composer require alibabacloud/ocr-api-20210707 3.1.2
2、 配置文件
在 ThinkPHP5 的配置文件中(如 config/aliyun.php),添加阿里云的相关配置信息:
return ['access_key_id' => 'your-access-key-id','access_key_secret' => 'your-access-key-secret','region_id' => 'cn-hangzhou', // 区域ID,默认为 cn-hangzhou
];
3、控制器直接引用使用
<?php
namespace app\index\controller;use Darabonba\OpenApi\OpenApiClient;
use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;use Darabonba\OpenApi\Models\Config;
use Darabonba\OpenApi\Models\Params;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\OpenApiRequest;class Index
{/*** 使用AK&SK初始化账号Client* @return OpenApiClient Client*/public static function createClient(){// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html。$config = new Config([// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。"accessKeyId" => config('aliyun.access_key_id'),// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。"accessKeySecret" => config('aliyun.access_key_secret')]);// Endpoint 请参考 https://api.aliyun.com/product/ocr-api$config->endpoint = "ocr-api.cn-hangzhou.aliyuncs.com";return new OpenApiClient($config);}/*** API 相关* @return Params OpenApi.Params*/public static function createApiInfo(){$params = new Params([// 接口名称"action" => "RecognizeEduPaperCut",// 接口版本"version" => "2021-07-07",// 接口协议"protocol" => "HTTPS",// 接口 HTTP 方法"method" => "POST","authType" => "AK","style" => "V3",// 接口 PATH"pathname" => "/",// 接口请求体内容格式"reqBodyType" => "json",// 接口响应体内容格式"bodyType" => "json"]);return $params;}/*** @param string[] $args* @return void*/public static function main($imgurl,$cuttype="question",$imgtype="photo"){$client = self::createClient();$params = self::createApiInfo();// query params$queries = [];$queries["Url"] = $imgurl;$queries["CutType"] = $cuttype;$queries["ImageType"] = $imgtype;// runtime options$runtime = new RuntimeOptions([]);$request = new OpenApiRequest(["query" => OpenApiUtilClient::query($queries)]);// 复制代码运行请自行打印 API 的返回值// 返回值实际为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。return $client->callApi($params, $request, $runtime);}//调用public function ocr(){$imgurl = input('imgurl');//图片url 路径$imgurl = ""; $cuttype = input('cuttype');//切题类型:question:题目, answer:答案。 $cuttype = $cuttype??"question";// var_dump($imgurl);// var_dump($cuttype);exit;$resurt = self::main($imgurl,$cuttype);if(isset($resurt['code'])){//请求失败才返回codereturn json(['code'=>$resurt['code'],'msg'=>$resurt['Message']]);}else{return json($resurt);}}}
提示:请求失败才返回 code 和Message 内容
4、返回参数处理
{"page_list": [{"angle": 0,"doc_index": 1,"height": 7000,"orgHeight": 7000,"orgWidth": 4716,"page_id": -1,"subject_list": [{"content_list_info": [{"doc_index": 1,"pos": [{"x": 337,"y": 1644},{"x": 2313,"y": 1641},{"x": 2313,"y": 2234},{"x": 337,"y": 2234}]}],"ids": ["1"],"is_multipage": false,"prism_wordsInfo": [{"pos": [{"x": 337,"y": 1644},{"x": 2313,"y": 1641},{"x": 2313,"y": 1715},{"x": 337,"y": 1719}],"word": "1.[2017·高密期末]三角形按角分类可以分为()"},{"pos": [{"x": 462,"y": 1777},{"x": 1925,"y": 1774},{"x": 1925,"y": 1846},{"x": 462,"y": 1849}],"word": "A.锐角三角形、直角三角形、钝角三角形"},{"pos": [{"x": 456,"y": 1904},{"x": 2004,"y": 1904},{"x": 2004,"y": 1976},{"x": 456,"y": 1976}],"word": "B.等腰三角形、等边三角形、不等边三角形"},{"pos": [{"x": 456,"y": 2034},{"x": 1633,"y": 2033},{"x": 1633,"y": 2104},{"x": 456,"y": 2105}],"word": "C.直角三角形、等腰直角三角形"},{"pos": [{"x": 453,"y": 2164},{"x": 1261,"y": 2164},{"x": 1261,"y": 2233},{"x": 453,"y": 2234}],"word": "D.以上答案都不正确"}],"text": "1.[2017·高密期末]三角形按角分类可以分为( ) A.锐角三角形、直角三角形、钝角三角形B. 等腰三角形、等边三角形、不等边三角形C.直角三角形、等腰直角三角形D.以上答案都不正确"}],"width": 4716}]
}
5、其他相关教育识别接口
1、 印刷体数学公式识别
RecognizeEduFormula
2、口算判题
RecognizeEduOralCalculation
3、整页试卷识别
RecognizeEduPaperOcr
4、试卷切题识别
RecognizeEduPaperCut
5、题目识别
RecognizeEduQuestionOcr
6、精细版结构化切题
RecognizeEduPaperStruct
7、关于费用
每月免费200次调用,每次0.225元,
套餐包:1000次 160左右,具体已阿里云官方为准
相关文章:
thinkphp5对接阿里云ocr试卷切题
thinkphp5对接阿里云ocr试卷切题 提示:切题使用的是api:RecognizeEduPaperCut 以下是基于 ThinkPHP5.14 框架调用阿里云 RecognizeEduPaperCut 接口的详细实现步骤和代码示例。 文章目录 thinkphp5对接阿里云ocr试卷切题前言1、前置准备2、 配置文件3、控制器直接引…...

AI数据分析:用DeepSeek做数据清洗
在当今数据驱动的时代,数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展,AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行数据清洗。 数据清洗是数据分析的基础,其目的是…...

免费轻巧多功能 PDF 处理工具:转换、压缩、提取一应俱全
软件技术 今天要给大家分享一款超实用的 PDF 处理工具,它免费又轻巧,如同随时待命的得力小帮手,功能之强大超乎想象,真的值得大家收藏。 这款工具是绿色版软件,解压后开启,满满的 PDF 处理功能便映入眼帘…...

基于JavaWeb开发的Java+SpringBoot+vue+element实现物流管理系统
基于JavaWeb开发的JavaSpringBootvueelement实现物流管理系统 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定…...

计算机毕业设计SpringBoot+Vue.js华强北商城二手手机管理系统 (源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

实验:k8s+keepalived+nginx+iptables
1、创建两个nginx的pod,app都是nginx nginx1 nginx2 2、创建两个的pod的service 3、配置两台keepalived的调度器和nginx七层反向代理,VIP设置192.168.254.110 keepalived调度器master keepalived调度器backup 两台调度器都配置nginx七层反向代理&#…...

DeepSeek入门学习
参考文档:DeepSeek(人工智能企业)_百度百科 DeepSeek-R1 凭借创新的强化学习技术实现重大突破。在极少量标注数据的基础上,通过深度优化的后训练阶段,显著提升了模型的推理能力。在数学运算、代码生成、自然语言推理等…...
几道考研数学题求解
函数性质问题 【题目】 已知函数 f ( x , y ) x 3 y 3 − ( x y ) 2 3 f(x, y) x^3 y^3 - (xy)^2 3 f(x,y)x3y3−(xy)23。设 T T T 为曲面 z f ( x , y ) z f(x, y) zf(x,y) 在点 ( 1 , 1 , 1 ) (1,1,1) (1,1,1) 处的切平面, D D D 为 T T T 与坐标…...
Highcharts 配置语法详解
Highcharts 配置语法详解 引言 Highcharts 是一个功能强大的图表库,广泛应用于数据可视化领域。本文将详细介绍 Highcharts 的配置语法,帮助您快速上手并制作出精美、实用的图表。 高级配置结构 Highcharts 的配置对象通常包含以下几部分:…...

OpenEuler学习笔记(三十五):搭建代码托管服务器
以下是主流的代码托管软件分类及推荐,涵盖自托管和云端方案,您可根据团队规模、功能需求及资源情况选择: 一、自托管代码托管平台(可私有部署) 1. GitLab 简介: 功能全面的 DevOps 平台,支持代码托管、C…...
Python的pdf2image库将PDF文件转换为PNG图片
您可以使用Python的pdf2image库将PDF文件转换为PNG图片。以下是一个完整的示例,包含安装步骤、代码示例和注意事项。 安装依赖库 首先,您需要安装pdf2image库: pip install pdf2imagepdf2image依赖于poppler库来解析PDF文件。 Windows系统…...
算法-二叉树篇26-将有序数组转换为二叉搜索树
将有序数组转换为二叉搜索树 力扣题目链接 题目描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 解题思路 很简单的遇到递归题目,对数组取半,然后构建中间节点作为该数组对应的…...
使用Python SciPy库来计算矩阵的RCS特征值并生成极坐标图
在Python中,计算矩阵的RCS(Rayleigh商迭代法)特征值通常涉及使用数值线性代数库,如NumPy或SciPy。RCS(Rayleigh商迭代法)是一种用于计算矩阵特征值和特征向量的迭代方法。 以下是一个简单的示例࿰…...

车载以太网-基于linux的ICMP协议
对于车载以太网-ICMP的技术要求: /** ICMP报文格式解析* -----------------* ICMP协议用于网络诊断和错误报告,常见应用包括Ping测试。* ICMP报文结构包括:IP头部、ICMP头部和ICMP数据部分。* 下面详细介绍每个部分的结构、字段的作用以及如何解析它们。* * ICMP头部结构:*…...

WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示
wordpress插件介绍 “WP高级摘要插件”功能丰富,它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度,灵活调整展示字数;设定摘要最后的显示字符, 如常用的省略号等以提示内容未完整展示;指定允许在摘要中显示…...
【嵌入式】MCU开发基础知识速通
一、MCU开发常用编程语言及语法要求 MCU(微控制器单元)开发常用的编程语言包括C语言、C、汇编语言和Python,每种语言都有其适用场景和优势。 C语言:C语言因其接近硬件特性和高效执行效率而广泛应用于MCU开发。它具有丰富的内置函…...

Yocto + 树莓派摄像头驱动完整指南
—— 从驱动配置、Yocto 构建,到 OpenCV 实战 在树莓派上运行摄像头,在官方的 Raspberry Pi OS 可能很简单,但在 Yocto 项目中,需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置、Yocto 关键…...

swift 开发效率提升工具
安装github copliot for xcode github/CopilotForXcode brew install --cask github-copilot-for-xcode安装swiftformat for xcode brew install swiftformatXcode Swift File代码格式化-SwiftFormat...

基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
本教程的演示都将在 Flink CDC CLI 中进行,无需一行 Java/Scala 代码,也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业,包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…...
Hue UI展示中文
个人博客地址:Hue UI展示中文 | 一张假钞的真实世界 如果使用开发分支代码如master分支)编译安装,需要自己编译语言文件。例如Hue安装目录为“/opt/hue”,则安装后执行以下命令: $ cd /opt/hue $ make locales 如果…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...