UMI HTTP接口手册

Translate to English

  • 命令行手册: README_CLI.md
  • HTTP接口手册: README_HTTP.md

HTTP接口手册

(本文档仅适用于 Umi-OCR 最新版本。旧版本请查看 Github备份分支 中对应版本的文档。)

基础说明

Umi-OCR-全局页-服务.png

如上图,必须允许HTTP服务才能使用HTTP接口(默认开启)。如果需要允许被局域网访问,请将主机切换到任何可用地址

在全局设置页中勾选高级才会显示。

注意事项:
  1. 关闭 Umi-OCR 软件时,如果仍有用户未断开HTTP接口连接,可能导致Umi-OCR关闭不完全(UI线程结束了,但负责网络的子线程未被关闭)。这时只能等待所有用户关闭连接,或者进任务管理器强制结束进程。
  2. 由于后端组件的性能限制,对并发支持较差,尽量不要并发调用。
  3. 由于后端组件的性能限制,在长时间、大批量、连续调用时,有小几率出现 Error: connect ECONNREFUSED 之类的HTTP报错。此时重新发起请求即可。只要后台工作线程没有崩,这些小问题不会持续影响调用。

目录

  1. 图片OCR:Base64 识别
  2. 图片OCR:参数查询
  3. 二维码:Base64 识别
  4. 二维码:从文本生成图片
  5. 命令行接口

1. 图片OCR:Base64 识别接口

传入一个base64编码的图片,返回OCR识别结果。

URL:/api/ocr

例:http://127.0.0.1:1224/api/ocr(实际端口请在全局设置中查看)

1.1. 请求格式

方法:POST

参数:json

参数名类型描述
base64string待识别图像的 Base64 编码字符串,无需前缀
optionsobject【可选】配置选项字典
  • base64无需data:image/png;base64,等前缀,直接放正文。
  • options 是可选的,可以不传这个参数。如果传了,则内部的所有子参数也均为可选。

参数示例:

{"base64": "iVBORw0KGgoAAAAN……","options": {# 通用参数"tbpu.parser": "multi_para","data.format": "json",# 引擎参数"ocr.angle": false,"ocr.language": "简体中文","ocr.maxSideLen": 1024}
}

options 中有两部分参数:通用参数引擎参数

通用参数 是在任何情况下都适用的,选项:

  • data.format :数据返回格式。返回值字典中,["data"] 按什么格式表示OCR结果数据。可选值(字符串):
    • dict:含有位置等信息的原始字典(默认)
    • text:纯文本
  • tbpu.parser :排版解析方案。可选值(字符串):
    • multi_para:多栏-按自然段换行(默认)
    • multi_line:多栏-总是换行
    • multi_none:多栏-无换行
    • single_para:单栏-按自然段换行
    • single_line:单栏-总是换行
    • single_none:单栏-无换行
    • single_code:单栏-保留缩进,适用于解析代码截图
    • none:不做处理
  • tbpu.ignoreArea :忽略区域功能。传入一些矩形框,位于这些矩形框内部的文字块将会被忽略。
    • 外层格式:列表[],每项表示一个矩形框。
    • 内层格式:列表[[x1,y1],[x2,y2]],其中x1,y1是矩形框左上角坐标,x2,y2是右下角坐标。
    • 示例:假设忽略区域包含3个矩形框,那么 tbpu.ignoreArea 的格式类似:
      [[[0,0],[100,50]],   // 第1个框,左上角(0,0),右下角(100,50)[[0,60],[200,120]], // 第2个[[400,0],[500,30]]  // 第3个
      ]
      
    • 注意,只有处于忽略区域框内部的整个文本块(而不是单个字符)会被忽略。如下图所示,黄色边框的深色矩形是一个忽略区域。那么只有key_mouse才会被忽略。pubsub_connector.pypubsub_service.py 这两个文本块得以保留。

忽略区域范围示例.png

引擎参数 对于加载不同引擎插件时,可能有所不同。完整参数说明请通过 get_options 接口查询。以下是一些示例:

PaddleOCR 引擎参数类型默认值描述
ocr.languagestringmodels/config_chinese.txt识别语言。可选值请通过 get_options 接口查询
ocr.clsbooleanfalse是否进行图像旋转校正。true/false
ocr.limit_side_lenint960图像压缩边长。允许 960/2880/4320/999999
RapidOCR 引擎参数类型默认值描述
ocr.languagestring简体中文识别语言。可选值请通过 get_options 接口查询
ocr.anglebooleanfalse是否进行图像旋转校正。true/false
ocr.maxSideLenint1024图像压缩边长。允许 1024/2048/4096/999999

1.2. 响应格式

json

字段名类型描述
codeint任务状态。100为成功,101为无文本,其余为失败
datalist/string识别结果,格式见下
timedouble识别耗时(秒)
timestampdouble任务开始时间戳(秒)
data 格式

图片中无文本(code==101),或识别失败(code!=100 and code!=101)时:

  • ["data"]为string,内容为错误原因。例: {"code": 902, "data": "向识别器进程传入指令失败,疑似子进程已崩溃"}

识别成功(code==100)时,如果options中data.formatdict(默认值):

  • ["data"]为list,每一项元素为dict,包含以下子元素:
参数名类型描述
textstring文本
scoredouble置信度 (0~1)
boxlist文本框顺时针四个角的xy坐标:[左上,右上,右下,左下]
endstring表示本行文字结尾的结束符,根据排版解析得出。可能为空、空格、换行。

结果示例:


{"code": 100,"data": [{"text": "第一行的文本,","score": 0.99800001,"box": [[x1,y1], [x2,y2], [x3,y3], [x4,y4]],"end": "",},{"text": "第二行的文本","score": 0.97513333,"box": [[x1,y1], [x2,y2], [x3,y3], [x4,y4]],"end": "\n",},]
}

识别成功(code==100)时,如果options中data.formattext

  • ["data"]为string,即所有OCR结果的拼接。例:
"data": "第一行的文本,第二行的文本\n"

1.3. 调用接口 示例代码

JavaScript 示例:(点击展开)
const url = 'http://127.0.0.1:1224/api/ocr';
const data = {base64: "iVBORw0KGgoAAAANSUhEUgAAAC4AAAAXCAIAAAD7ruoFAAAACXBIWXMAABnWAAAZ1gEY0crtAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AAAHjSURBVEiJ7ZYrcsMwEEBXnR7FLuj0BPIJHJOi0DAZ2qSsMCxEgjYrDQqJdALrBJ2ASndRgeNI8ledutOCLrLl1e7T/mRkjIG/IXe/DWBldRTNEoQSpgNURe5puiiaJehrMuJSXSTgbaby0A1WzLrCCQCmyn0FwoN0V06QONWAt1nUxfnjHYA8p65GjhDKxcjedVH6JOejBPwYh21eE0Wzfe0tqIsEkGXcVcpoMH4CRZ+P0lsQp/pWJ4ripf1XFDFe8GHSHlYcSo9Es31t60RdFlN1RUmrma5oTzTVB8ZUaeeYEC9GmL6kNkDw9BANAQYo3xTNdqUkvHq+rYhDKW0Bj3RSEIpmyWyBaZaMTCrCK+tJ5Jsa07fs3E7esE66HzralRLgJKp0/BD6fJRSxvmDsb6joqkcFXGqMVVFFEHDL2gTxwCAaTabnkFUWhDCHTd9iYrGcAL1ZnqIp5Vpiqh7bCfua7FA4qN0INMcN1+cgCzj+UFxtbmvwdZvGIrI41JiqhZBWhhF8WxorkYPpQwJiWYJeA3rXE4hzcwJ+B96F9zCFHC0FcVegghvFul7oeEE8PvHeJqC0w0AUbbFIT8JnEwGbPKcS2OxU3HMTqD0r4wgEIuiKJ7i4MS16+og8/+bPZRPLa+6Ld2DSzcAAAAASUVORK5CYII=",// 可选参数// Paddle引擎模式// "options": {//     "ocr.language": "models/config_chinese.txt",//     "ocr.cls": false,//     "ocr.limit_side_len": 960,//     "tbpu.parser": "multi_para",//     "data.format": "text",//     "tbpu.ignoreArea": [ // 忽略区域//         [[-5,-5],[100,50]]//     ],// }// Rapid引擎模式// "options": {//     "ocr.language": "简体中文",//     "ocr.angle": false,//     "ocr.maxSideLen": 1024,//     "tbpu.parser": "multi_para",//     "data.format": "text",// }
};fetch(url, {method: "POST", body: JSON.stringify(data),headers: {"Content-Type": "application/json"},}).then(response => response.json()).then(data => {console.log(data);}).catch(error => {console.error(error);});
Python 示例:(点击展开)
import requests
import jsonurl = "http://127.0.0.1:1224/api/ocr"
data = {"base64": "iVBORw0KGgoAAAANSUhEUgAAAC4AAAAXCAIAAAD7ruoFAAAACXBIWXMAABnWAAAZ1gEY0crtAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AAAHjSURBVEiJ7ZYrcsMwEEBXnR7FLuj0BPIJHJOi0DAZ2qSsMCxEgjYrDQqJdALrBJ2ASndRgeNI8ledutOCLrLl1e7T/mRkjIG/IXe/DWBldRTNEoQSpgNURe5puiiaJehrMuJSXSTgbaby0A1WzLrCCQCmyn0FwoN0V06QONWAt1nUxfnjHYA8p65GjhDKxcjedVH6JOejBPwYh21eE0Wzfe0tqIsEkGXcVcpoMH4CRZ+P0lsQp/pWJ4ripf1XFDFe8GHSHlYcSo9Es31t60RdFlN1RUmrma5oTzTVB8ZUaeeYEC9GmL6kNkDw9BANAQYo3xTNdqUkvHq+rYhDKW0Bj3RSEIpmyWyBaZaMTCrCK+tJ5Jsa07fs3E7esE66HzralRLgJKp0/BD6fJRSxvmDsb6joqkcFXGqMVVFFEHDL2gTxwCAaTabnkFUWhDCHTd9iYrGcAL1ZnqIp5Vpiqh7bCfua7FA4qN0INMcN1+cgCzj+UFxtbmvwdZvGIrI41JiqhZBWhhF8WxorkYPpQwJiWYJeA3rXE4hzcwJ+B96F9zCFHC0FcVegghvFul7oeEE8PvHeJqC0w0AUbbFIT8JnEwGbPKcS2OxU3HMTqD0r4wgEIuiKJ7i4MS16+og8/+bPZRPLa+6Ld2DSzcAAAAASUVORK5CYII=",# 可选参数# Paddle引擎模式# "options": {#     "ocr.language": "models/config_chinese.txt",#     "ocr.cls": False,#     "ocr.limit_side_len": 960,#     "tbpu.parser": "multi_para",#     "data.format": "text",#     "tbpu.ignoreArea": [ # 忽略区域#         [[-5,-5],[100,50]]#     ],# }# Rapid引擎模式# "options": {#     "ocr.language": "简体中文",#     "ocr.angle": False,#     "ocr.maxSideLen": 1024,#     "tbpu.parser": "multi_para",#     "data.format": "text",# }
}
headers = {"Content-Type": "application/json"}
data_str = json.dumps(data)
response = requests.post(url, data=data_str, headers=headers)
if response.status_code == 200:res_dict = json.loads(response.text)print("返回值字典\n", res_dict)

2. 图片OCR:参数查询接口

返回当前需要提供哪些options参数。

URL:/api/ocr/get_options

例:http://127.0.0.1:1224/api/ocr/get_options

2.1. 请求格式

方法:GET

参数:无

2.2. 响应格式

json

以PaddleOCR引擎插件为例:

展开
{"ocr.language": {"title": "语言/模型库","optionsList": [["models/config_chinese.txt","简体中文"],["models/config_en.txt","English"],["models/config_chinese_cht(v2).txt","繁體中文"],["models/config_japan.txt","日本語"],["models/config_korean.txt","한국어"],["models/config_cyrillic.txt","Русский"]],"type": "enum","default": "models/config_chinese.txt"},"ocr.cls": {"title": "纠正文本方向","default": false,"toolTip": "启用方向分类,识别倾斜或倒置的文本。可能降低识别速度。","type": "boolean"},"ocr.limit_side_len": {"title": "限制图像边长","optionsList": [[ 960, "960 (默认)" ],[ 2880, "2880" ],[ 4320, "4320" ],[ 999999, "无限制" ]],"toolTip": "将边长大于该值的图片进行压缩,可以提高识别速度。可能降低识别精度。","type": "enum","default": 960},"tbpu.parser": {"title": "排版解析方案","toolTip": "按什么方式,解析和排序图片中的文字块","default": "multi_para","optionsList": [["multi_para","多栏-按自然段换行"],["multi_line","多栏-总是换行"],["multi_none","多栏-无换行"],["single_para","单栏-按自然段换行"],["single_line","单栏-总是换行"],["single_none","单栏-无换行"],["single_code","单栏-保留缩进"],["none","不做处理"]]},"data.format": {"title": "数据返回格式","toolTip": "返回值字典中,[\"data\"] 按什么格式表示OCR结果数据","default": "dict","optionsList": [["dict", "含有位置等信息的原始字典"],["text","纯文本"]]}
}

可以看到,上述示例中,拥有5个配置参数:ocr.languageocr.clsocr.limit_side_lentbpu.parserdata.format

其中ocr.cls是布尔值,对应到UI面板中的开关。调用接口时,应该传入truefalse

其余参数都是枚举,对应下拉栏UI。optionsList的元素的第0位是key,第1位是显示文本。调用接口时,应该传入key值的字符串。比如对于如下的 optionsList ,应该传入 "dict""text"

      ["dict", "含有位置等信息的原始字典"],["text","纯文本"]

2.3. 调用接口 示例代码

JavaScript 示例:(点击展开)
const url = "http://127.0.0.1:1224/api/ocr/get_options";
fetch(url, {method: "GET",headers: { "Content-Type": "application/json" },}).then(response => response.json()).then(data => { console.log(data); }).catch(error => { console.error(error); });

3. 二维码:Base64 识别接口

传入一个base64编码的图片,返回二维码识别结果。

URL:/api/qrcode

例:http://127.0.0.1:1224/api/qrcode

3.1. 请求格式

方法:POST

参数:json

参数名类型描述
base64string待识别图像的 Base64 编码字符串,无需前缀
optionsobject【可选】配置选项字典
  • base64无需data:image/png;base64,等前缀,直接放正文。
  • options 是可选的,可以不传这个参数。如果传了,则内部的所有子参数也均为可选。

options 内部项说明:(控制对图片进行像素层面的预处理,增强识别准确度。)

options 内部参数类型描述
preprocessing.median_filter_sizeint中值滤波器的大小,应为1~9的奇数。默认不进行。
preprocessing.sharpness_factordouble锐度增强因子,应为0.1~10。默认不调整锐度。
preprocessing.contrast_factordouble对比度增强因子,应为0.1~10。大于1增强对比度,小于1但大于0减少对比度,1保持原样。默认不调整对比度。
preprocessing.grayscalebool是否将图像转换为灰度图像。True为转换,False为不转换。默认为False。
preprocessing.thresholdint二值化阈值,用于灰度图像的二值化处理。应为0到255之间的整数。只有当"preprocessing.grayscale"为true时,此参数才生效。默认不进行二值化处理。

参数示例:

{"base64": "iVBORw0KGgoAAAAN……","options": {"preprocessing.contrast_factor": 1.5,"preprocessing.grayscale": true}
}

3.2. 响应格式

json

与 OCR 结果的格式非常相似。

字段名类型描述
codeint任务状态。100成功,101没找到二维码,其余为失败
datalist/string识别结果,格式见下
timedouble识别耗时(秒)
timestampdouble任务开始时间戳(秒)
data 格式

没找到二维码(code==101),或识别失败(code!=100 and code!=101)时:

  • ["data"]为string,内容为错误原因。例: {"code": 204, "data": "【Error】zxingcpp 二维码解析失败。\n[Error] zxingcpp read_bar……"}

识别成功(code==100)时:

  • ["data"]为list,记录图片中每个二维码的结果(因为一张图片可能含多个码)。每项结果的子元素为:
参数名类型描述
textstring二维码文本。
formatstring二维码格式,如 "QRCode" 等,具体见下。
boxlist文本框顺时针四个角的xy坐标:[左上,右上,右下,左下]
orientationint二维码方向。0为正上。
scoreint为了与OCR格式兼容而设,永远为1,无意义。

二维码格式:

"Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","EAN13","EAN8","ITF","LinearCodes","MatrixCodes","MaxiCode","MicroQRCode","PDF417","QRCode","UPCA","UPCE"

结果示例:

{"code": 100,"data": [ {"orientation": 0,"box": [[4,4],[25,4],[25,25],[4,25]],"score": 1,"format": "QRCode","text": "abc"} ],"time": 0,"timestamp": 1711521012.625574
}

3.3. 调用接口 示例代码

JavaScript 示例:(点击展开)
const url = "http://127.0.0.1:1224/api/qrcode";
const base64 = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAAdAB0BAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APU/GfjM+EjAzW9o0DW8txNPdXEkSxKkkMYAEcUjMS069hjBrn3+K0yi3B0/RozO52y3OtG3gaPy7WRWV5IVJO27DFSoIEbYycCrF18Sb2z1a20u70rTbO8uLiKzigutRl3NcNDBIyAxW7rhTcIu4sAcE8Cu00LU/wC2/D2mat5Pk/brSK58rdu2b0Dbc4GcZxnAri/iSdPGs6AuqySW+nzpcW11dg27xwIzQspkimikDIZUiG/5QhK5PzCuPI1qz8ISalajUtNu1czLGsxnt7tHhhhiijNmkSF22W8aFeFWZ2RjIjeVXvrq0t/EWmaTpq3d9rTXFpCqpa2iRW92sCJOUP2WZYjEsNszrG7Bd/GNhr2zQtP/ALI8PaZpuMfY7SK3x5nmY2IF+9tXd067Vz6DpXH/ABK1LVrN7SLTIr6622k159isYYnknkjuLVUI8yGXGzzWfhc5UHPFeeSyav4dtI9R8O+Ho5dYS4WNrSK1EV2sb29ncFJY7aOPzIkkYhjhSGaME7WdHy72y8NWthbfDxrrfDDdpdXH2eVvtIu/IcStcOUaCGFMqGKNKUELZDEsU+g/DUcMXhXSI7cRrAllCsYjIKhQgxgh3BGP9t/95upk1PQtH1vyv7W0qxv/ACc+X9rt0l2ZxnG4HGcDp6Co7Xw1oNiipaaJptuiPvVYbVEAbcjZGB13RxnPqin+EYksdC0fTIo4rDSrG0jjlM6JBbpGFkKlC4AHDFSVz1wcdKuQQQ2tvFb28UcMESBI441CqigYAAHAAHGK/9k="
const data = {"base64": base64,// 可选,预处理参数// "options": {//     "preprocessing.contrast_factor": 1.5,//     "preprocessing.grayscale": true,// }
};fetch(url, {method: "POST",headers: {"Content-Type": "application/json"},body: JSON.stringify(data)}).then(response => response.json()).then(data => {if(data.code === 100) {console.log("识别二维码成功!图片中的二维码数量:", data.data.length);console.log("二维码内容:");for (let d of data.data) {console.log("    文本:", d.text);console.log("    格式:", d.format);console.log("    方向:", d.orientation);console.log("    ====");}}else {console.log("识别二维码失败!错误码:", data.code, " 错误信息:", data.data);}}).catch(error => {console.error(error);});


4. 二维码:从文本生成图片

传入文本,根据文本生成二维码图片,返回图片base64。

URL:/api/qrcode (与二维码识别接口一致,只是参数不同)

例:http://127.0.0.1:1224/api/qrcode

4.1. 请求格式

方法:POST

参数:json

参数名类型描述
textstring要写入二维码的文本
optionsdict控制参数,选填
  • options 是可选的,可以不传这个参数。如果传了,则内部的所有子参数也均为可选。

参数示例:

{"text": "要写入二维码的文本","options": {"format": "QRCode", // 二维码格式"w": 0, // 图像宽度,0为自动设为最小宽度"h": 0, // 图像高度"quiet_zone": -1, // 码四周的空白边缘宽度,-1为自动"ec_level": -1, // 纠错等级,-1为自动}
}
options参数名类型默认值描述
formatstring"QRCode"码格式的可选值 见上文
wint0图像宽度,0自动设为最小宽度
hint0图像高度
quiet_zoneint-1码四周的空白边缘宽度,-1为自动
ec_levelint-1纠错等级,-1为自动,可选值见下
  • ec_level 可选值: -1:自动, 1:7%,0:15%,3:25%, 2:30%。
  • ec_level 纠错仅对这些格式生效:AztecPDF417QRCode

4.2. 响应格式

json

字段名类型描述
codeint任务状态。100成功,其余为失败
datastring生成结果,格式见下
  • 生成图片成功(code==100)时:"data" 为图片的base64字符串,图片编码为jpeg
  • 生成图片失败(code!=100)时:"data" 为错误信息字符串。

4.3. 调用接口 示例代码

JavaScript 示例:(点击展开)
const url = "http://127.0.0.1:1224/api/qrcode";
const data = {// 必填"text": "测试文本",// 选填"options": {"format": "QRCode", // 码类型"w": 0, // 图像宽度,0为自动设为最小宽度"h": 0, // 图像高度"quiet_zone": -1, // 码四周的空白边缘宽度,-1为自动"ec_level": -1, // 纠错等级,-1为自动}
};
fetch(url, {method: "POST",headers: {"Content-Type": "application/json"},body: JSON.stringify(data)}).then(response => response.json()).then(data => {if(data.code === 100) {console.log("生成二维码base64:", data.data);}else {console.log("生成二维码base64失败!错误码:", data.code, " 错误信息:", data.data);}}).catch(error => {console.error(error);});

5. 命令行 接口

此接口用于命令行参数的跨进程传输,一般由程序内部自动调用。开发者也可手动调用。

由于此接口较敏感(如允许访问本机图片、关闭软件等),故只允许本地环回 127.0.0.1 调用。局域网或外网无法访问此接口。

URL:/argv

例:http://127.0.0.1:1224/argv

请求

方法:POST

参数:json list

传入一个 列表 ,列表中记录命令行参数。

  • 如:命令行调用 Umi-OCR.exe --path "D:/xxx.png"
  • 等价于向argv接口发送: ["--path", "D:/xxx.png"]

具体命令行规则请见 README_CLI.md 。

调用接口 示例代码

JavaScript 示例:(点击展开)
const url = "http://127.0.0.1:1224/argv";
// 发送截图指令 Umi-OCR.exe --screenshot
const data = ["--screenshot"];
fetch(url, {method: "POST",headers: {"Content-Type": "application/json"},body: JSON.stringify(data)}).then(response => response.text()) // 返回值是字符串.then(data => {console.log("截图结果:\n", data)}).catch(error => {console.error(error);});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java内存区域与内存溢出异常(补充)

2.2.5 方法区 方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但是它却有一…

2024浙江外国语学院汉语桥线上项目 “在杭州,看见更好的中国”开班

7月9日上午,由教育部中外语言交流合作中心主办、浙江外国语学院国际商学院承办的2024汉语桥“在杭州,看见更好的中国”线上项目正式启动。项目负责人何骅老师及汉语桥教师团队,与来自越南、缅甸、日本、俄罗斯的100名学员相聚云端&#xff0c…

Nginx配置基础

ect/nginx/nginx.conf配置 1)nginx 相关目录 工作目录:ect/nginx 家目录 执行文件:/usr/sbin/nginx 启动或重载 sudo /usr/sbin/nginx -t 检查配置文件 sudo /usr/sbin/nginx -s reload 重启服务 日志文件:/var/log/nginx 启动文…

计算机视觉研究方向初学习,计算机视觉都有什么方向??!到底是干什么的?!

计算机视觉研究方向初学习,计算机视觉都有什么方向??!到底是干什么的?! 语义分割图像分类目标检测和定位实例分割、全景分割物体跟踪姿态估计人脸识别人体识别图像增强风格迁移图像生成视觉问答视频分析光学…

SpringBoot实战:轻松实现接口数据脱敏

文章目录 引言一、接口数据脱敏概述1.1 接口数据脱敏的定义1.2 接口数据脱敏的重要性1.3 接口数据脱敏的实现方式 二、开发环境三、实现接口返回数据脱敏3.1 添加依赖3.2 创建自定义注解3.3 定义脱敏枚举类3.4 创建自定义序列化类 四、测试4.1 编写测试代码4.2 测试 五、总结 引…

C++基础(七):类和对象(中-2)

上一篇博客学的默认成员函数是类和对象的最重要的内容,相信大家已经掌握了吧,这一篇博客接着继续剩下的内容,加油! 目录 一、const成员(理解) 1.0 引入 1.1 概念 1.2 总结 1.2.1 对象调用成员函数 …

自动群发消息插件常用源代码科普!

随着网络技术的快速发展,自动群发消息插件成为了众多企业和个人提高效率、加强沟通的重要工具。 然而,开发一个高效且稳定的自动群发消息插件并非易事,需要深入理解并熟练掌握相关的源代码。 本文将从五个方面,通过具体的源代码…

通俗易懂--.csproj 文件

.csproj 文件 .csproj,是C#项目文件的扩展名,它是“C Sharp Project”的缩写。.net开发环境中建立项目时,会产生.csproj文件,这是C#的工程文件,其中记录了与工程有关的相关信息,例如包含的文件,…

2024第六届上海国际新材料展览会-12月精彩呈现

2024第六届上海国际新材料展览会 The 6th shanghai International New Materials Exhibition in 2024 时 间:2024年12月18-20日 地 点:上海新国际博览中心 CIME 2024专业、权威,涵盖整个新材料行业的国际盛会。 期待与您在CIME 2024现场相…

【INTEL(ALTERA)】为什么我使用 PIO 边缘捕获中断的 Nios® II 设计不能正常工作?

目录 说明 解决方法 说明 当用户选择了不正确的边缘捕获设置,从而阻止触发中断时,可能会出现此问题。 在 PIO(并行 I/O)英特尔 FPGA IP内核中,如果“启用单个位设置/清除”选项被关闭,则将任何值写入边…

【购物车案例】for循环为什么使用key

要做出一个简单的购物车界面。首先&#xff0c;有一个复选框&#xff0c;可以选择商品&#xff0c;后面紧跟的是商品名称&#xff0c;然后&#xff0c;是删除按钮&#xff0c;根据这个需求&#xff0c;先写出一个简单的界面&#xff0c;代码如下&#xff1a; <template>…

openssh9.8p1更新 修复漏洞(CVE-2024-6387)

2024 年 7 月&#xff0c;互联网公开披露了一个 OpenSSH 的远程代码执行漏洞&#xff08;CVE-2024-6387&#xff09;。鉴于该漏洞虽然利用较为困难但危害较大&#xff0c;建议所有使用受影响的企业尽快修复该漏洞。 centos7 为例 yum -y install gcc make openssl-devel zlib…

三相感应电机的建模仿真(3)基于ABC相坐标系Level2 S-Fun以及定子串不对称电抗起动过程仿真分析

1. 概述 2. 三相感应电动机状态方程式 3. 基于Level2 S-Function的仿真模型建立 4. 动态分析实例 5. 总结 6. 参考文献 1. 概述 三相感应电机自然坐标系下的数学模型是一组周期性变系数微分方程(其电感矩阵是转子位置角的函数,转子位置角随时间按正弦规律变化),将其用…

[hudsonL@cock.li].mkp勒索病毒的最新威胁:如何恢复您的数据?

引言&#xff1a; 在当今数字化时代&#xff0c;勒索病毒成为网络安全领域的一个严重挑战。最近出现的.[hudsonLcock.li].mkp、[hendersoncock.li].mkp、[myersairmail.cc].mkp勒索病毒&#xff0c;以其具有破坏力的加密技术和极具威胁性的赎金要求&#xff0c;给个人用户和组…

量子保密通信协议原理:量子保密通信实验

纸上得来终觉浅&#xff0c;绝知此事要躬行。 在之前的文章中&#xff0c;我们对量子密钥分发协议原理、分发过程进行了详细的描述&#xff0c;今天我们实操一波。博主向大家隆重介绍一下华中师范大学量子保密通信虚拟仿真试验平台&#xff1a;量子保密通信是将量子密钥分发和一…

AR增强现实汽车装配仿真培训系统开发降低投入费用

随着互联网的无处不在&#xff0c;AR增强现实技术正逐步融入我们生活的每一个角落。深圳华锐视点作为一家引领行业潮流的AR内容开发的技术型公司&#xff0c;正以其卓越的技术实力和专业的服务团队&#xff0c;推动着国内AR技术向更加成熟和多元化的方向迈进。 深圳华锐视点提供…

[ TOOLS ] JFLASH 使用说明

一、使用everything查找JFLASH everything是指这个软件&#xff0c;使用这个方便查找想要的文件 二、创建一个工程并配置 创建完后进行配置&#xff1a; Target devic: 板子的芯片型号&#xff0c;比如R7FA6M4Target interface: 一般是SWDSpeed: 一般是4000kHz, 不能下载则将Sp…

从“+AI”到“AI+”,时代进入“Next Level”

“创新的速度比创新本身更重要。”埃隆马斯克曾这样说到。 近日&#xff0c;由马斯克所掌舵的特斯拉&#xff0c;在2024年世界人工智能大会上正式推出了第二代Optimus&#xff08;擎天柱&#xff09;人形机器人&#xff0c;距离第一代面世&#xff0c;仅过去9个月。 加速升级…

AI古风插画视频:成都亚恒丰创教育科技有限公司

AI古风插画视频&#xff1a;科技与传统美学的诗意交融 在数字技术的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;以其惊人的学习能力与创造力&#xff0c;正逐步渗透并重塑着艺术的边界。成都亚恒丰创教育科技有限公司其中&#xff0c;AI古风插画视频作为一股清流&a…

ArcGIS:探索地理信息系统的强大功能与实际应用

ArcGIS是一款功能强大的地理信息系统&#xff08;GIS&#xff09;软件&#xff0c;由Esri公司开发。它广泛应用于各个领域&#xff0c;包括城市规划、环境保护、资源管理、交通运输等。作为一名长期使用ArcGIS的用户&#xff0c;我深感这款软件在数据分析、地图制作和空间信息管…