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

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试卷切题 提示&#xff1a;切题使用的是api:RecognizeEduPaperCut 以下是基于 ThinkPHP5.14 框架调用阿里云 RecognizeEduPaperCut 接口的详细实现步骤和代码示例。 文章目录 thinkphp5对接阿里云ocr试卷切题前言1、前置准备2、 配置文件3、控制器直接引…...

AI数据分析:用DeepSeek做数据清洗

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

免费轻巧多功能 PDF 处理工具:转换、压缩、提取一应俱全

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

基于JavaWeb开发的Java+SpringBoot+vue+element实现物流管理系统

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

计算机毕业设计SpringBoot+Vue.js华强北商城二手手机管理系统 (源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

实验:k8s+keepalived+nginx+iptables

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

DeepSeek入门学习

参考文档&#xff1a;DeepSeek&#xff08;人工智能企业&#xff09;_百度百科 DeepSeek-R1 凭借创新的强化学习技术实现重大突破。在极少量标注数据的基础上&#xff0c;通过深度优化的后训练阶段&#xff0c;显著提升了模型的推理能力。在数学运算、代码生成、自然语言推理等…...

几道考研数学题求解

函数性质问题 【题目】 已知函数 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) 处的切平面&#xff0c; D D D 为 T T T 与坐标…...

Highcharts 配置语法详解

Highcharts 配置语法详解 引言 Highcharts 是一个功能强大的图表库&#xff0c;广泛应用于数据可视化领域。本文将详细介绍 Highcharts 的配置语法&#xff0c;帮助您快速上手并制作出精美、实用的图表。 高级配置结构 Highcharts 的配置对象通常包含以下几部分&#xff1a…...

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…...

Python的pdf2image库将PDF文件转换为PNG图片

您可以使用Python的pdf2image库将PDF文件转换为PNG图片。以下是一个完整的示例&#xff0c;包含安装步骤、代码示例和注意事项。 安装依赖库 首先&#xff0c;您需要安装pdf2image库&#xff1a; pip install pdf2imagepdf2image依赖于poppler库来解析PDF文件。 Windows系统…...

算法-二叉树篇26-将有序数组转换为二叉搜索树

将有序数组转换为二叉搜索树 力扣题目链接 题目描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 解题思路 很简单的遇到递归题目&#xff0c;对数组取半&#xff0c;然后构建中间节点作为该数组对应的…...

使用Python SciPy库来计算矩阵的RCS特征值并生成极坐标图

在Python中&#xff0c;计算矩阵的RCS&#xff08;Rayleigh商迭代法&#xff09;特征值通常涉及使用数值线性代数库&#xff0c;如NumPy或SciPy。RCS&#xff08;Rayleigh商迭代法&#xff09;是一种用于计算矩阵特征值和特征向量的迭代方法。 以下是一个简单的示例&#xff0…...

车载以太网-基于linux的ICMP协议

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

WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示

wordpress插件介绍 “WP高级摘要插件”功能丰富&#xff0c;它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度&#xff0c;灵活调整展示字数&#xff1b;设定摘要最后的显示字符&#xff0c; 如常用的省略号等以提示内容未完整展示&#xff1b;指定允许在摘要中显示…...

【嵌入式】MCU开发基础知识速通

一、MCU开发常用编程语言及语法要求 MCU&#xff08;微控制器单元&#xff09;开发常用的编程语言包括C语言、C、汇编语言和Python&#xff0c;每种语言都有其适用场景和优势。 C语言&#xff1a;C语言因其接近硬件特性和高效执行效率而广泛应用于MCU开发。它具有丰富的内置函…...

Yocto + 树莓派摄像头驱动完整指南

—— 从驱动配置、Yocto 构建&#xff0c;到 OpenCV 实战 在树莓派上运行摄像头&#xff0c;在官方的 Raspberry Pi OS 可能很简单&#xff0c;但在 Yocto 项目中&#xff0c;需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 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 中进行&#xff0c;无需一行 Java/Scala 代码&#xff0c;也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业&#xff0c;包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…...

Hue UI展示中文

个人博客地址&#xff1a;Hue UI展示中文 | 一张假钞的真实世界 如果使用开发分支代码如master分支&#xff09;编译安装&#xff0c;需要自己编译语言文件。例如Hue安装目录为“/opt/hue”&#xff0c;则安装后执行以下命令&#xff1a; $ cd /opt/hue $ make locales 如果…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...

从实验室到产业:IndexTTS 在六大核心场景的落地实践

一、内容创作&#xff1a;重构数字内容生产范式 在短视频创作领域&#xff0c;IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色&#xff0c;生成的 “各位吴彦祖们大家好” 语音相似度达 97%&#xff0c;单条视频播放量突破百万…...

boost::filesystem::path文件路径使用详解和示例

boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类&#xff0c;封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解&#xff0c;包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...