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

thinkphp5对接腾讯云文字识别ocr试卷切题

thinkphp5对接腾讯云文字识别试卷切题

提示:切题使用的是api:QuestionSplitOCR
以下是基于 ThinkPHP5.14 框架调用阿里云 QuestionSplitOCR 接口的详细实现步骤和代码示例。


文章目录

  • thinkphp5对接腾讯云文字识别试卷切题
    • @[TOC](文章目录)
  • 前言
        • 1、前置准备
        • 2、 配置文件
        • 3、控制器直接引用使用
        • 4、返回参数处理
        • 5、特定场景识别相关接口
    • RecognizeEduPaperStruct
        • 7、关于费用

前言

1、前置准备

在开始开发之前,请确保完成以下准备工作:

1、开通服务:在腾讯云云控制台文字识别-特定场景识别相关接口-试卷切题,并购买相关资源包。 这里也可以按量付费,用多少月底出账单即可,开通后可免费使用1000次
2、获取凭证:获取腾讯云 SecretId 和 SecretKey,用于接口调用的身份验证。
3、安装依赖:通过 Composer 安装腾讯云 SDK。运行以下命令安装:

composer require tencentcloud/ocr
2、 配置文件

在 ThinkPHP5 的配置文件中(如 config/tencent.php),添加腾讯云的相关配置信息:

return [
    'SecretId'     => '*********************',
    'SecretKey' => '**********************'
];
3、控制器直接引用使用
<?php
namespace app\index\controller;

use TencentCloud\Common\Credential;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Ocr\V20181119\OcrClient;
use TencentCloud\Ocr\V20181119\Models\QuestionSplitOCRRequest;

class Tencent
{
      public function index()
    {
        return '<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:) </h1><p> ThinkPHP V5.1<br/><span style="font-size:30px">12载初心不改(2006-2018) - 你值得信赖的PHP框架</span></p></div><script type="text/javascript" src="https://tajs.qq.com/stats?sId=64890268" charset="UTF-8"></script><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="eab4b9f840753f8e7"></think>';
    }
   

    public function main($imgurl)
    {
        try {
            // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
            // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
            $SecretId = config('tencent.SecretId');
            $SecretKey = config('tencent.SecretKey');
            // 密钥可前往官网控制台 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 QuestionSplitOCRRequest();

            $params = array(
                'ImageUrl'=>$imgurl,
            );
            $req->fromJsonString(json_encode($params));

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

            // 输出json格式的字符串回包
            print_r($resp->toJsonString());
        }
            catch(TencentCloudSDKException $e) {
            echo $e;
        }
    }

    //调用
    public function ocr(){
        $imgurl = input('imgurl');
        //图片url 路径
        $imgurl = "http://baidu.com/document/20250228/team_61/33413.png";
        $resurt = self::main($imgurl);
        if(isset($resurt['code'])){//请求失败才返回code
             return json(['code'=>$resurt['code'],'msg'=>$resurt['Message']]);
        }else{
             $resurt['code'] =200;
             return json($resurt);
        }
       
    }

}

提示:请求失败才返回 code 和Message 内容

4、返回参数处理
{
    "Response": {
        "QuestionInfo": [
            {
                "Angle": -0.16999949956523785,
                "Height": 200,
                "ImageBase64": "TPI3z9of/AKMN8F/+Fhd//GaKKAP/2Q==",
                "OrgHeight": 196,
                "OrgWidth": 1626,
                "ResultList": [
                    {
                        "Answer": [],
                        "Coord": [
                            {
                                "LeftBottom": {
                                    "X": 14,
                                    "Y": 845
                                },
                                "LeftTop": {
                                    "X": 14,
                                    "Y": 650
                                },
                                "RightBottom": {
                                    "X": 1603,
                                    "Y": 845
                                },
                                "RightTop": {
                                    "X": 1603,
                                    "Y": 650
                                }
                            }
                        ],
                        "Figure": [],
                        "Option": [
                            {
                                "Coord": {
                                    "LeftBottom": {
                                        "X": 65,
                                        "Y": 689
                                    },
                                    "LeftTop": {
                                        "X": 65,
                                        "Y": 650
                                    },
                                    "RightBottom": {
                                        "X": 234,
                                        "Y": 689
                                    },
                                    "RightTop": {
                                        "X": 234,
                                        "Y": 650
                                    }
                                },
                                "GroupType": "multiple-choice",
                                "Index": 1,
                                "ResultList": null,
                                "Text": "A.b>c>a"
                            },
                            {
                                "Coord": {
                                    "LeftBottom": {
                                        "X": 364,
                                        "Y": 689
                                    },
                                    "LeftTop": {
                                        "X": 364,
                                        "Y": 650
                                    },
                                    "RightBottom": {
                                        "X": 552,
                                        "Y": 689
                                    },
                                    "RightTop": {
                                        "X": 552,
                                        "Y": 650
                                    }
                                },
                                "GroupType": "multiple-choice",
                                "Index": 2,
                                "ResultList": null,
                                "Text": "B.a>b>c"
                            },
                            {
                                "Coord": {
                                    "LeftBottom": {
                                        "X": 700,
                                        "Y": 689
                                    },
                                    "LeftTop": {
                                        "X": 700,
                                        "Y": 650
                                    },
                                    "RightBottom": {
                                        "X": 871,
                                        "Y": 689
                                    },
                                    "RightTop": {
                                        "X": 871,
                                        "Y": 650
                                    }
                                },
                                "GroupType": "multiple-choice",
                                "Index": 3,
                                "ResultList": null,
                                "Text": "C.c>a>b"
                            },
                            {
                                "Coord": {
                                    "LeftBottom": {
                                        "X": 1037,
                                        "Y": 689
                                    },
                                    "LeftTop": {
                                        "X": 1037,
                                        "Y": 650
                                    },
                                    "RightBottom": {
                                        "X": 1214,
                                        "Y": 689
                                    },
                                    "RightTop": {
                                        "X": 1214,
                                        "Y": 650
                                    }
                                },
                                "GroupType": "multiple-choice",
                                "Index": 4,
                                "ResultList": null,
                                "Text": "D.c>b>a"
                            }
                        ],
                        "Question": [
                            {
                                "Coord": {
                                    "LeftBottom": {
                                        "X": 14,
                                        "Y": 845
                                    },
                                    "LeftTop": {
                                        "X": 14,
                                        "Y": 759
                                    },
                                    "RightBottom": {
                                        "X": 1603,
                                        "Y": 845
                                    },
                                    "RightTop": {
                                        "X": 1603,
                                        "Y": 759
                                    }
                                },
                                "GroupType": "multiple-choice",
                                "Index": 0,
                                "ResultList": null,
                                "Text": "5.若M(-6,a),N(2,b),P(6,c)三点都在反比例函数$y=\\frac{m^{2}+1}{x}$图象上,则a、b、c的大小关系为()"
                            }
                        ],
                        "Table": []
                    }
                ],
                "Width": 1626
            }
        ],
        "RequestId": "f1f81d7f-af58-4204-9275-30e7d945b5a7"
    }
}
5、特定场景识别相关接口

数学公式识别
车牌识别
车辆VIN码识别
印章识别
试题识别
试卷切题
公式识别

RecognizeEduPaperStruct

7、关于费用

开通后1000次免费调用,免费完了收费每次0.2元,
套餐包:1000次 200左右,10000次1200 元
具体已腾讯云官方为准
腾讯的比阿里云ocr 精准度更高,嘻嘻吐槽一下阿里云,期待国外的mathpix 有试卷切题功能。


http://www.kler.cn/a/580201.html

相关文章:

  • kali linux web扫描工具
  • electron获取鼠标在浏览器外的点击和拖拽等动作
  • Python中很常用的100个函数整理
  • Linux网络编程——网络编程初识、UDP套接字简单了解
  • 三次握手与四次挥手
  • vscode arm拓展 keil acm5 到acm6迁移
  • 【透视国家的三维棱镜:技术、制度与文化的解构与重构】
  • 知识库Dify和cherry无法解析影印pdf word解决方案
  • 数据安全基石:备份文件的重要性与自动化实践
  • 【iOS逆向与安全】sms短信转发插件与上传服务器开发
  • Rust 模式匹配中的可反驳性与不可反驳性
  • Docker数据管理,端口映射与容器互联
  • 【网络安全工程】任务11:路由器配置与静态路由配置
  • 用Python实现PDF转Doc格式小程序
  • 一篇文章巩固技术-----设计模式
  • 安固软件上网行为管理软件:提升企业效率与安全的双重保障
  • 【leetcode hot 100 2】两数相加
  • volatile 在 JVM 层面的实现机制
  • 时序分析
  • Hadoop安装文件解压报错:无法创建符号链接。。。