diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml
new file mode 100644
index 0000000..41c1b76
--- /dev/null
+++ b/.github/workflows/npm-publish.yml
@@ -0,0 +1,47 @@
+# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
+# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
+
+name: Node.js Package
+
+on:
+ release:
+ types: [created]
+
+jobs:
+ # build:
+ # runs-on: ubuntu-latest
+ # steps:
+ # - uses: actions/checkout@v2
+ # - uses: actions/setup-node@v1
+ # with:
+ # node-version: 12
+ # - run: npm ci
+ # - run: npm test
+
+ publish-npm:
+ # needs: build
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v1
+ with:
+ node-version: 12
+ registry-url: https://registry.npmjs.org/
+ # - run: npm ci
+ - run: npm publish --access public
+ env:
+ NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
+
+ # publish-gpr:
+ # # needs: build
+ # runs-on: ubuntu-latest
+ # steps:
+ # - uses: actions/checkout@v2
+ # - uses: actions/setup-node@v1
+ # with:
+ # node-version: 12
+ # registry-url: https://npm.pkg.github.com/
+ # # - run: npm ci
+ # - run: npm publish
+ # env:
+ # NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
diff --git a/README.md b/README.md
index 345d42b..7289e49 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![Build Status](https://travis-ci.org/Baidu-AIP/nodejs-sdk.svg?branch=master)](https://travis-ci.org/Baidu-AIP/nodejs-sdk)
+[![Build Status](https://travis-ci.org/meteorasd555/learn.svg?branch=master)](https://travis-ci.org/meteorasd555/learn)
[![npm](https://img.shields.io/npm/v/baidu-aip-sdk.svg)](https://www.npmjs.com/package/baidu-aip-sdk)
# 安装百度AI开放平台 Node.js SDK
diff --git a/package.json b/package.json
index 1c287b5..d44fdd5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
- "name": "baidu-aip-sdk",
- "version": "2.4.6",
+ "name": "@yocdev/baidu-aip-sdk",
+ "version": "4.15.4-yoc.3",
"description": "百度AI开放平台Nodejs SDK, 文档以及详情请访问官网: https://ai.baidu.com",
"main": "src/index.js",
"scripts": {
@@ -13,11 +13,10 @@
"url": "https://github.com/Baidu-AIP/nodejs-sdk.git"
},
"dependencies": {
- "debug": "^2.6.0",
- "iconv-lite": "^0.4.15",
- "keep-alive-agent": "0.0.1",
- "request": "^2.79.0",
- "underscore": "^1.8.3"
+ "debug": "^2.6.9",
+ "iconv-lite": "^0.4.24",
+ "request": "^2.88.2",
+ "underscore": "^1.12.0"
},
"optionalDependencies": {
"should": "^13.2.0",
diff --git a/src/AipBodyAnalysis.js b/src/AipBodyAnalysis.js
deleted file mode 100644
index 7e582df..0000000
--- a/src/AipBodyAnalysis.js
+++ /dev/null
@@ -1,202 +0,0 @@
-'use strict';
-/**
- * Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- *
- * @file AipBodyAnalysis.js
- * @author baidu aip
- */
-
-const BaseClient = require('./client/baseClient');
-
-const RequestInfo = require('./client/requestInfo');
-
-const HttpClient = require('./http/httpClient');
-
-const objectTools = require('./util/objectTools');
-
-const METHOD_POST = 'POST';
-
-const BODY_ANALYSIS_PATH = '/rest/2.0/image-classify/v1/body_analysis';
-const BODY_ATTR_PATH = '/rest/2.0/image-classify/v1/body_attr';
-const BODY_NUM_PATH = '/rest/2.0/image-classify/v1/body_num';
-const GESTURE_PATH = '/rest/2.0/image-classify/v1/gesture';
-const BODY_SEG_PATH = '/rest/2.0/image-classify/v1/body_seg';
-const DRIVER_BEHAVIOR_PATH = '/rest/2.0/image-classify/v1/driver_behavior';
-const BODY_TRACKING_PATH = '/rest/2.0/image-classify/v1/body_tracking';
-const HAND_ANALYSIS_PATH = '/rest/2.0/image-classify/v1/driver_behavior';
-
-
-/**
- * AipBodyAnalysis类
- *
- * @class
- * @extends BaseClient
- * @constructor
- * @param {string} appid appid.
- * @param {string} ak access key.
- * @param {string} sk security key.
- */
-class AipBodyAnalysis extends BaseClient {
- constructor(appId, ak, sk) {
- super(appId, ak, sk);
- }
- commonImpl(param) {
- let httpClient = new HttpClient();
- let apiUrl = param.targetPath;
- delete param.targetPath;
- let requestInfo = new RequestInfo(apiUrl,
- param, METHOD_POST);
- return this.doRequest(requestInfo, httpClient);
- }
-
- /**
- * 人体关键点识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- bodyAnalysis(image, options) {
- let param = {
- image: image,
- targetPath: BODY_ANALYSIS_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 人体检测与属性识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * type gender,
age,
lower_wear,
upper_wear,
headwear,
glasses,
upper_color,
lower_color,
cellphone,
upper_wear_fg,
upper_wear_texture,
lower_wear_texture,
orientation,
umbrella,
bag,
smoke,
vehicle,
carrying_item,
upper_cut,
lower_cut,
occlusion,
is_human | 1)可选值说明:
gender-性别,
age-年龄阶段,
lower_wear-下身服饰,
upper_wear-上身服饰,
headwear-是否戴帽子,
glasses-是否戴眼镜,
upper_color-上身服饰颜色,
lower_color-下身服饰颜色,
cellphone-是否使用手机,
upper_wear_fg-上身服饰细分类,
upper_wear_texture-上身服饰纹理,
orientation-身体朝向,
umbrella-是否撑伞;
bag-背包,
smoke-是否吸烟,
vehicle-交通工具,
carrying_item-是否有手提物,
upper_cut-上方截断,
lower_cut-下方截断,
occlusion-遮挡,
is_human-是否是正常人体
2)type 参数值可以是可选值的组合,用逗号分隔;**如果无此参数默认输出全部21个属性**
- * @return {Promise} - 标准Promise对象
- */
- bodyAttr(image, options) {
- let param = {
- image: image,
- targetPath: BODY_ATTR_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 人流量统计接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * area 特定框选区域坐标,支持多个多边形区域,最多支持10个区域,如输入超过10个区域,截取前10个区域进行识别。
**此参数为空或无此参数、或area参数设置错误时,默认识别整个图片的人数** 。
area参数设置错误的示例:某个坐标超过原图大小,x、y坐标未成对出现等;注意:**设置了多个区域时,任意一个坐标设置错误,则认为area参数错误、失效**。
**area参数设置格式**:
1)多个区域用英文分号“;”分隔;
2)同一个区域内的坐标用英文逗号“,”分隔,默认尾点和首点相连做闭合。
示例:
1)单个多边形区域:x1,y1,x2,y2,x3,y3...xn,yn
2)多个多边形区域:xa1,ya1,xa2,ya2,xa3,ya3...xan,yan;xb1,yb1,xb2,yb2,xb3,yb3...xbn,ybn;..
- * show 是否输出渲染的图片,默认不返回,**选true时返回渲染后的图片(base64)**,其它无效值或为空则默认false
- * @return {Promise} - 标准Promise对象
- */
- bodyNum(image, options) {
- let param = {
- image: image,
- targetPath: BODY_NUM_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 手势识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- gesture(image, options) {
- let param = {
- image: image,
- targetPath: GESTURE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 人像分割接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * type 可以通过设置type参数,自主设置返回哪些结果图,避免造成带宽的浪费
1)可选值说明:
labelmap - 二值图像,需二次处理方能查看分割效果
scoremap - 人像前景灰度图
foreground - 人像前景抠图,透明背景
2)type 参数值可以是可选值的组合,用逗号分隔;如果无此参数默认输出全部3类结果图
- * @return {Promise} - 标准Promise对象
- */
- bodySeg(image, options) {
- let param = {
- image: image,
- targetPath: BODY_SEG_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 驾驶行为分析接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * type smoke,cellphone,
not_buckling_up,
both_hands_leaving_wheel,
not_facing_front |识别的属性行为类别,英文逗号分隔,默认所有属性都识别;
smoke //吸烟,
cellphone //打手机 ,
not_buckling_up // 未系安全带,
both_hands_leaving_wheel // 双手离开方向盘,
not_facing_front // 视角未看前方
- * @return {Promise} - 标准Promise对象
- */
- driverBehavior(image, options) {
- let param = {
- image: image,
- targetPath: DRIVER_BEHAVIOR_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 人流量统计-动态版接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {string} dynamic - true:动态人流量统计,返回总人数、跟踪ID、区域进出人数;
false:静态人数统计,返回总人数
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * case_id 当dynamic为True时,必填;任务ID(通过case_id区分不同视频流,自拟,不同序列间不可重复即可)
- * case_init 当dynamic为True时,必填;每个case的初始化信号,为true时对该case下的跟踪算法进行初始化,为false时重载该case的跟踪状态。当为false且读取不到相应case的信息时,直接重新初始化
- * show 否返回结果图(含统计值和跟踪框渲染),默认不返回,选true时返回渲染后的图片(base64),其它无效值或为空则默认false
- * area 当dynamic为True时,必填;静态人数统计时,只统计区域内的人,缺省时为全图统计。
动态人流量统计时,进出区域的人流会被统计。
逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的xy坐标(默认尾点和首点相连),形成闭合多边形区域。
服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且大于3个顶点)。只支持单个多边形区域,建议设置矩形框,即4个顶点。**坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最小建议从1开始,最大到1279**。
- * @return {Promise} - 标准Promise对象
- */
- bodyTracking(image, dynamic, options) {
- let param = {
- image: image,
- dynamic: dynamic,
- targetPath: BODY_TRACKING_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 手部关键点识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- handAnalysis(image, options) {
- let param = {
- image: image,
- targetPath: HAND_ANALYSIS_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-}
-
-module.exports = AipBodyAnalysis;
-
diff --git a/src/AipContentCensor.js b/src/AipContentCensor.js
index a3b4de2..a57c2de 100644
--- a/src/AipContentCensor.js
+++ b/src/AipContentCensor.js
@@ -30,11 +30,19 @@ const CONTENT_TYPE_JSON = 'application/json';
const METHOD_POST = 'POST';
-const PATH_USER_DEFINED_IMAGE = '/rest/2.0/solution/v1/img_censor/v2/user_defined';
-const PATH_USER_DEFINED_TEXT = '/rest/2.0/solution/v1/text_censor/v2/user_defined';
-
+const PATH_USER_DEFINED = '/rest/2.0/solution/v1/img_censor/v2/user_defined';
+const PATH_VOICE_USER_DEFINED = '/rest/2.0/solution/v1/voice_censor/v2/user_defined';
+const PATH_VIDEO_USER_DEFINED = '/rest/2.0/solution/v1/video_censor/v2/user_defined';
+const PATH_ANTIPORN_GIF = '/rest/2.0/antiporn/v1/detect_gif';
+const PATH_FACEAUDIT = '/rest/2.0/solution/v1/face_audit';
+const PATH_COMBOCENSOR = '/api/v1/solution/direct/img_censor';
const PATH_REPORT = '/rpc/2.0/feedback/v1/report';
+const PATH_USER_DEFINED_TEXT = '/rest/2.0/solution/v1/text_censor/v2/user_defined';
+
+const PATH_ANTIPORN = '/rest/2.0/antiporn/v1/detect';
+const PATH_ANTITERROR = '/rest/2.0/antiterror/v1/detect';
+const PATH_ANTISPAM = '/rest/2.0/antispam/v2/spam';
const scope = require('./const/devScope').DEFAULT;
@@ -74,6 +82,53 @@ class AipImageCensor extends BaseClient {
return this.doRequest(requestInfo, httpClient);
}
+ antiPornGif(image, options) {
+ let param = {
+ image: image,
+ targetPath: PATH_ANTIPORN_GIF
+ };
+ return this.commonImpl(objectTools.merge(param, options));
+ }
+
+ antiPorn(image, options) {
+ let param = {
+ image: image,
+ targetPath: PATH_ANTIPORN
+ };
+ return this.commonImpl(objectTools.merge(param, options));
+ }
+
+ antiTerror(image, options) {
+ let param = {
+ image: image,
+ targetPath: PATH_ANTITERROR
+ };
+ return this.commonImpl(objectTools.merge(param, options));
+ }
+
+ antiSpam(content, options) {
+ let param = {
+ content: content,
+ targetPath: PATH_ANTISPAM
+ };
+ return this.commonImpl(objectTools.merge(param, options));
+ }
+
+ faceAudit(images, type, configId) {
+ let param = {configId: configId};
+ if (type === 'url') {
+ images = images.map(function (elm) {
+ return encodeURIComponent(elm);
+ });
+ param.imgUrls = images.join(',');
+ }
+ if (type === 'base64') {
+ param.images = images.join(',');
+ }
+ param.targetPath = PATH_FACEAUDIT;
+ return this.commonImpl(param);
+ }
+
imageCensorUserDefined(image, type) {
let param = {};
if (type === 'url') {
@@ -82,15 +137,29 @@ class AipImageCensor extends BaseClient {
if (type === 'base64') {
param.image = image;
}
- param.targetPath = PATH_USER_DEFINED_IMAGE;
+ param.targetPath = PATH_USER_DEFINED;
return this.commonImpl(param);
}
- textCensorUserDefined(text, type) {
+ imageCensorComb(image, type, scenes, scenesConf) {
let param = {};
- param.text = text;
- param.targetPath = PATH_USER_DEFINED_TEXT;
- return this.commonImpl(param);
+ if (type === 'url') {
+ param.imgUrl = image;
+ }
+ if (type === 'base64') {
+ param.image = image;
+ }
+ param.scenes = scenes;
+ param.sceneConf = scenesConf;
+ param.targetPath = PATH_COMBOCENSOR;
+ return this.jsonRequestImpl(param);
+ }
+
+ textCensorUserDefined(text, type) {
+ let param = {};
+ param.text = text;
+ param.targetPath = PATH_USER_DEFINED_TEXT;
+ return this.commonImpl(param);
}
report(feedback) {
@@ -99,6 +168,29 @@ class AipImageCensor extends BaseClient {
param.targetPath = PATH_REPORT;
return this.jsonRequestImpl(param);
}
+
+ voiceCensorUserDefined(voice, type, fmt, options) {
+ let param = {};
+ if (type === 'url') {
+ param.url = voice;
+ }
+ if (type === 'base64') {
+ param.base64 = voice;
+ }
+ param.fmt = fmt;
+ param.targetPath = PATH_VOICE_USER_DEFINED;
+ return this.commonImpl(objectTools.merge(param, options));
+ }
+
+ videoCensorUserDefined(name, videoUrl, extId, options) {
+ let param = {};
+ param.name = name;
+ param.videoUrl = videoUrl;
+ param.extId = extId;
+ param.targetPath = PATH_VIDEO_USER_DEFINED;
+ return this.commonImpl(objectTools.merge(param, options));
+ }
+
}
-module.exports = AipImageCensor;
\ No newline at end of file
+module.exports = AipImageCensor;
diff --git a/src/AipEasyDL.js b/src/AipEasyDL.js
deleted file mode 100644
index 2d255c1..0000000
--- a/src/AipEasyDL.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-/**
- * Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- *
- * @file AipEasyDL.js
- * @author baidu aip
- */
-
-
-
-const BaseClient = require('./client/baseClient');
-
-const RequestInfo = require('./client/requestInfo');
-
-const HttpClient = require('./http/httpClientExt');
-
-const objectTools = require('./util/objectTools');
-
-const METHOD_POST = 'POST';
-
-const DETECT_PATH = '/rest/2.0/face/v3/detect';
-const SEARCH_PATH = '/rest/2.0/face/v3/search';
-const USER_ADD_PATH = '/rest/2.0/face/v3/faceset/user/add';
-const USER_UPDATE_PATH = '/rest/2.0/face/v3/faceset/user/update';
-const FACE_DELETE_PATH = '/rest/2.0/face/v3/faceset/face/delete';
-const USER_GET_PATH = '/rest/2.0/face/v3/faceset/user/get';
-const FACE_GETLIST_PATH = '/rest/2.0/face/v3/faceset/face/getlist';
-const GROUP_GETUSERS_PATH = '/rest/2.0/face/v3/faceset/group/getusers';
-const USER_COPY_PATH = '/rest/2.0/face/v3/faceset/user/copy';
-const USER_DELETE_PATH = '/rest/2.0/face/v3/faceset/user/delete';
-const GROUP_ADD_PATH = '/rest/2.0/face/v3/faceset/group/add';
-const GROUP_DELETE_PATH = '/rest/2.0/face/v3/faceset/group/delete';
-const GROUP_GETLIST_PATH = '/rest/2.0/face/v3/faceset/group/getlist';
-const PERSON_VERIFY_PATH = '/rest/2.0/face/v3/person/verify';
-const VIDEO_SESSIONCODE_PATH = '/rest/2.0/face/v1/faceliveness/sessioncode';
-
-
-/**
- * AipEasyDL类
- *
- * @class
- * @extends BaseClient
- * @constructor
- * @param {string} appid appid.
- * @param {string} ak access key.
- * @param {string} sk security key.
- */
-class AipEasyDL extends BaseClient {
- constructor(appId, ak, sk) {
- super(appId, ak, sk);
- }
- commonImpl(param) {
- let httpClient = new HttpClient();
- let apiUrl = param.targetPath;
- delete param.targetPath;
- let requestInfo = new RequestInfo(apiUrl,
- param, METHOD_POST);
- return this.doRequest(requestInfo, httpClient);
- }
- requestImage(url, image, options) {
- let param = {
- image: image,
- targetPath: url
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
- requestSound(url, sound, options) {
- let param = {
- sound: sound,
- targetPath: url
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-}
-
-module.exports = AipEasyDL;
-
diff --git a/src/AipFace.js b/src/AipFace.js
index 0ef14df..639a22a 100644
--- a/src/AipFace.js
+++ b/src/AipFace.js
@@ -29,7 +29,6 @@ const METHOD_POST = 'POST';
const DETECT_PATH = '/rest/2.0/face/v3/detect';
const SEARCH_PATH = '/rest/2.0/face/v3/search';
-const MULTI_SEARCH_PATH = '/rest/2.0/face/v3/multi-search';
const USER_ADD_PATH = '/rest/2.0/face/v3/faceset/user/add';
const USER_UPDATE_PATH = '/rest/2.0/face/v3/faceset/user/update';
const FACE_DELETE_PATH = '/rest/2.0/face/v3/faceset/face/delete';
@@ -43,6 +42,7 @@ const GROUP_DELETE_PATH = '/rest/2.0/face/v3/faceset/group/delete';
const GROUP_GETLIST_PATH = '/rest/2.0/face/v3/faceset/group/getlist';
const PERSON_VERIFY_PATH = '/rest/2.0/face/v3/person/verify';
const VIDEO_SESSIONCODE_PATH = '/rest/2.0/face/v1/faceliveness/sessioncode';
+const VIDEO_FACELIVENESS_PATH = '/rest/2.0/face/v1/faceliveness/verify';
/**
@@ -72,13 +72,12 @@ class AipFace extends BaseClient {
* 人脸检测接口
*
* @param {string} image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
- * @param {string} imageType - 图片类型
**BASE64**:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
**FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
+ * @param {string} imageType - 图片类型 **BASE64**:图片的base64值,base64编码后的图片数据,需urlencode,编码后的图片大小不超过2M;**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)**;FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * face_field 包括**age,beauty,expression,face_shape,gender,glasses,landmark,landmark72,landmark150,race,quality,eye_status,emotion,face_type信息**
逗号分隔. 默认只返回face_token、人脸框、概率和旋转角度
+ * face_field 包括**age,beauty,expression,faceshape,gender,glasses,landmark,race,quality,facetype,parsing信息**
逗号分隔. 默认只返回face_token、人脸框、概率和旋转角度
* max_face_num 最多处理人脸的数目,默认值为1,仅检测图片中面积最大的那个人脸;**最大值10**,检测图片中面积最大的几张人脸。
* face_type 人脸的类型 **LIVE**表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等**IDCARD**表示身份证芯片照:二代身份证内置芯片中的人像照片 **WATERMARK**表示带水印证件照:一般为带水印的小图,如公安网小图 **CERT**表示证件照片:如拍摄的身份证、工卡、护照、学生证等证件图片 默认**LIVE**
- * liveness_control 活体检测控制 **NONE**: 不进行控制 **LOW**:较低的活体要求(高通过率 低攻击拒绝率) **NORMAL**: 一般的活体要求(平衡的攻击拒绝率, 通过率) **HIGH**: 较高的活体要求(高攻击拒绝率 低通过率) **默认NONE**
* @return {Promise} - 标准Promise对象
*/
detect(image, imageType, options) {
@@ -94,16 +93,14 @@ class AipFace extends BaseClient {
* 人脸搜索接口
*
* @param {string} image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
- * @param {string} imageType - 图片类型
**BASE64**:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
**FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
+ * @param {string} imageType - 图片类型 **BASE64**:图片的base64值,base64编码后的图片数据,需urlencode,编码后的图片大小不超过2M;**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)**;FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个
* @param {string} groupIdList - 从指定的group中进行查找 用逗号分隔,**上限20个**
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * max_face_num 最多处理人脸的数目
**默认值为1(仅检测图片中面积最大的那个人脸)** **最大值10**
- * match_threshold 匹配阈值(设置阈值后,score低于此阈值的用户信息将不会返回) 最大100 最小0 默认80
**此阈值设置得越高,检索速度将会越快,推荐使用默认阈值`80`**
* quality_control 图片质量控制 **NONE**: 不进行控制 **LOW**:较低的质量要求 **NORMAL**: 一般的质量要求 **HIGH**: 较高的质量要求 **默认 NONE**
* liveness_control 活体检测控制 **NONE**: 不进行控制 **LOW**:较低的活体要求(高通过率 低攻击拒绝率) **NORMAL**: 一般的活体要求(平衡的攻击拒绝率, 通过率) **HIGH**: 较高的活体要求(高攻击拒绝率 低通过率) **默认NONE**
* user_id 当需要对特定用户进行比对时,指定user_id进行比对。即人脸认证功能。
- * max_user_num 查找后返回的用户数量。返回相似度最高的几个用户,默认为1,最多返回50个。
+ * max_user_num 查找后返回的用户数量。返回相似度最高的几个用户,默认为1,最多返回20个。
* @return {Promise} - 标准Promise对象
*/
search(image, imageType, groupIdList, options) {
@@ -116,36 +113,11 @@ class AipFace extends BaseClient {
return this.commonImpl(objectTools.merge(param, options));
}
- /**
- * 人脸搜索 M:N 识别接口
- *
- * @param {string} image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
- * @param {string} imageType - 图片类型
**BASE64**:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
**FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
- * @param {string} groupIdList - 从指定的group中进行查找 用逗号分隔,**上限20个**
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * max_face_num 最多处理人脸的数目
**默认值为1(仅检测图片中面积最大的那个人脸)** **最大值10**
- * match_threshold 匹配阈值(设置阈值后,score低于此阈值的用户信息将不会返回) 最大100 最小0 默认80
**此阈值设置得越高,检索速度将会越快,推荐使用默认阈值`80`**
- * quality_control 图片质量控制 **NONE**: 不进行控制 **LOW**:较低的质量要求 **NORMAL**: 一般的质量要求 **HIGH**: 较高的质量要求 **默认 NONE**
- * liveness_control 活体检测控制 **NONE**: 不进行控制 **LOW**:较低的活体要求(高通过率 低攻击拒绝率) **NORMAL**: 一般的活体要求(平衡的攻击拒绝率, 通过率) **HIGH**: 较高的活体要求(高攻击拒绝率 低通过率) **默认NONE**
- * max_user_num 查找后返回的用户数量。返回相似度最高的几个用户,默认为1,最多返回50个。
- * @return {Promise} - 标准Promise对象
- */
- multiSearch(image, imageType, groupIdList, options) {
- let param = {
- image: image,
- image_type: imageType,
- group_id_list: groupIdList,
- targetPath: MULTI_SEARCH_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
/**
* 人脸注册接口
*
- * @param {string} image - 图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断。注:组内每个uid下的人脸图片数目上限为20张
- * @param {string} imageType - 图片类型
**BASE64**:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
**FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
+ * @param {string} image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
+ * @param {string} imageType - 图片类型 **BASE64**:图片的base64值,base64编码后的图片数据,需urlencode,编码后的图片大小不超过2M;**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)**;FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个
* @param {string} groupId - 用户组id(由数字、字母、下划线组成),长度限制128B
* @param {string} userId - 用户id(由数字、字母、下划线组成),长度限制128B
* @param {Object} options - 可选参数对象,key: value都为string类型
@@ -153,7 +125,6 @@ class AipFace extends BaseClient {
* user_info 用户资料,长度限制256B
* quality_control 图片质量控制 **NONE**: 不进行控制 **LOW**:较低的质量要求 **NORMAL**: 一般的质量要求 **HIGH**: 较高的质量要求 **默认 NONE**
* liveness_control 活体检测控制 **NONE**: 不进行控制 **LOW**:较低的活体要求(高通过率 低攻击拒绝率) **NORMAL**: 一般的活体要求(平衡的攻击拒绝率, 通过率) **HIGH**: 较高的活体要求(高攻击拒绝率 低通过率) **默认NONE**
- * action_type 操作方式 APPEND: 当user_id在库中已经存在时,对此user_id重复注册时,新注册的图片默认会追加到该user_id下,REPLACE : 当对此user_id重复注册时,则会用新图替换库中该user_id下所有图片,默认使用APPEND
* @return {Promise} - 标准Promise对象
*/
addUser(image, imageType, groupId, userId, options) {
@@ -171,7 +142,7 @@ class AipFace extends BaseClient {
* 人脸更新接口
*
* @param {string} image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
- * @param {string} imageType - 图片类型
**BASE64**:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
**FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
+ * @param {string} imageType - 图片类型 **BASE64**:图片的base64值,base64编码后的图片数据,需urlencode,编码后的图片大小不超过2M;**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)**;FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个
* @param {string} groupId - 更新指定groupid下uid对应的信息
* @param {string} userId - 用户id(由数字、字母、下划线组成),长度限制128B
* @param {Object} options - 可选参数对象,key: value都为string类型
@@ -179,7 +150,6 @@ class AipFace extends BaseClient {
* user_info 用户资料,长度限制256B
* quality_control 图片质量控制 **NONE**: 不进行控制 **LOW**:较低的质量要求 **NORMAL**: 一般的质量要求 **HIGH**: 较高的质量要求 **默认 NONE**
* liveness_control 活体检测控制 **NONE**: 不进行控制 **LOW**:较低的活体要求(高通过率 低攻击拒绝率) **NORMAL**: 一般的活体要求(平衡的攻击拒绝率, 通过率) **HIGH**: 较高的活体要求(高攻击拒绝率 低通过率) **默认NONE**
- * action_type 操作方式 APPEND: 当user_id在库中已经存在时,对此user_id重复注册时,新注册的图片默认会追加到该user_id下,REPLACE : 当对此user_id重复注册时,则会用新图替换库中该user_id下所有图片,默认使用APPEND
* @return {Promise} - 标准Promise对象
*/
updateUser(image, imageType, groupId, userId, options) {
@@ -355,7 +325,7 @@ class AipFace extends BaseClient {
* 身份验证接口
*
* @param {string} image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
- * @param {string} imageType - 图片类型
**BASE64**:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
**FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
+ * @param {string} imageType - 图片类型 **BASE64**:图片的base64值,base64编码后的图片数据,需urlencode,编码后的图片大小不超过2M;**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)**;FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个
* @param {string} idCardNumber - 身份证号(真实身份证号号码)
* @param {string} name - utf8,姓名(真实姓名,和身份证号匹配)
* @param {Object} options - 可选参数对象,key: value都为string类型
@@ -389,6 +359,24 @@ class AipFace extends BaseClient {
};
return this.commonImpl(objectTools.merge(param, options));
}
+
+ /**
+ * 视频活体检测接口接口
+ *
+ * @param {string} sessionId - 语音校验码会话id,使用此接口的前提是已经调用了语音校验码接口
+ * @param {string} videoBase64 - base64编码后的视频数据(视频限制:最佳为上传5-15s的mp4文件。视频编码方式:h264编码;音频编码格式:aac,pcm均可。)
+ * @param {Object} options - 可选参数对象,key: value都为string类型
+ * @description options - options列表:
+ * @return {Promise} - 标准Promise对象
+ */
+ videoFaceliveness(sessionId, videoBase64, options) {
+ let param = {
+ session_id: sessionId,
+ video_base64: videoBase64,
+ targetPath: VIDEO_FACELIVENESS_PATH
+ };
+ return this.commonImpl(objectTools.merge(param, options));
+ }
/**
* 在线活体检测
*
diff --git a/src/AipImageClassify.js b/src/AipImageClassify.js
index 0d6a640..a83cd13 100644
--- a/src/AipImageClassify.js
+++ b/src/AipImageClassify.js
@@ -28,19 +28,20 @@ const METHOD_POST = 'POST';
const ADVANCED_GENERAL_PATH = '/rest/2.0/image-classify/v2/advanced_general';
const DISH_DETECT_PATH = '/rest/2.0/image-classify/v2/dish';
const CAR_DETECT_PATH = '/rest/2.0/image-classify/v1/car';
-const VEHICLE_DETECT_PATH = '/rest/2.0/image-classify/v1/vehicle_detect';
-const VEHICLE_DAMAGE_PATH = '/rest/2.0/image-classify/v1/vehicle_damage';
const LOGO_SEARCH_PATH = '/rest/2.0/image-classify/v2/logo';
const LOGO_ADD_PATH = '/rest/2.0/realtime_search/v1/logo/add';
const LOGO_DELETE_PATH = '/rest/2.0/realtime_search/v1/logo/delete';
const ANIMAL_DETECT_PATH = '/rest/2.0/image-classify/v1/animal';
const PLANT_DETECT_PATH = '/rest/2.0/image-classify/v1/plant';
const OBJECT_DETECT_PATH = '/rest/2.0/image-classify/v1/object_detect';
-const LANDMARK_PATH = '/rest/2.0/image-classify/v1/landmark';
-const FLOWER_PATH = '/rest/2.0/image-classify/v1/flower';
-const INGREDIENT_PATH = '/rest/2.0/image-classify/v1/classify/ingredient';
-const REDWINE_PATH = '/rest/2.0/image-classify/v1/redwine';
-const CURRENCY_PATH = '/rest/2.0/image-classify/v1/currency';
+
+
+const CUSTOM_DISH_ADD_PATH = "/rest/2.0/image-classify/v1/realtime_search/dish/add";
+const CUSTOM_DISH_SEARCH_PATH = "/rest/2.0/image-classify/v1/realtime_search/dish/search";
+const CUSTOM_DISH_DELETE_PATH = "/rest/2.0/image-classify/v1/realtime_search/dish/delete";
+const MULTI_OBJECT_DETECT_PATH = "/rest/2.0/image-classify/v1/multi_object_detect";
+const COMBINATION_PATH = "/api/v1/solution/direct/imagerecognition/combination";
+
/**
@@ -72,7 +73,6 @@ class AipImageClassify extends BaseClient {
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * baike_num 返回百科信息的结果数,默认不返回
* @return {Promise} - 标准Promise对象
*/
advancedGeneral(image, options) {
@@ -90,8 +90,6 @@ class AipImageClassify extends BaseClient {
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* top_num 返回预测得分top结果数,默认为5
- * filter_threshold 默认0.95,可以通过该参数调节识别效果,降低非菜识别率.
- * baike_num 返回百科信息的结果数,默认不返回
* @return {Promise} - 标准Promise对象
*/
dishDetect(image, options) {
@@ -109,7 +107,6 @@ class AipImageClassify extends BaseClient {
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* top_num 返回预测得分top结果数,默认为5
- * baike_num 返回百科信息的结果数,默认不返回
* @return {Promise} - 标准Promise对象
*/
carDetect(image, options) {
@@ -120,40 +117,6 @@ class AipImageClassify extends BaseClient {
return this.commonImpl(objectTools.merge(param, options));
}
- /**
- * 车辆检测接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * show 是否返回结果图(含统计值和跟踪框)。选true时返回渲染后的图片(base64),其它无效值或为空则默认false。
- * area 只统计该区域内的车辆数,缺省时为全图统计。
逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的x、y坐标(默认尾点和首点相连),形成闭合多边形区域。
服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且大于3个顶点)。只支持单个多边形区域,建议设置矩形框,即4个顶点。**坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最大到1279**。
- * @return {Promise} - 标准Promise对象
- */
- vehicleDetect(image, options) {
- let param = {
- image: image,
- targetPath: VEHICLE_DETECT_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 车辆外观损伤识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- vehicleDamage(image, options) {
- let param = {
- image: image,
- targetPath: VEHICLE_DAMAGE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
/**
* logo商标识别接口
*
@@ -228,7 +191,6 @@ class AipImageClassify extends BaseClient {
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* top_num 返回预测得分top结果数,默认为6
- * baike_num 返回百科信息的结果数,默认不返回
* @return {Promise} - 标准Promise对象
*/
animalDetect(image, options) {
@@ -245,7 +207,6 @@ class AipImageClassify extends BaseClient {
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * baike_num 返回百科信息的结果数,默认不返回
* @return {Promise} - 标准Promise对象
*/
plantDetect(image, options) {
@@ -273,88 +234,129 @@ class AipImageClassify extends BaseClient {
return this.commonImpl(objectTools.merge(param, options));
}
+
+
+
+
/**
- * 地标识别接口
+ * 自定义菜品识别—入库
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param {string} brief - 简介
* @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
+ * @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- landmark(image, options) {
+ customDishesAddImage(image, brief, options) {
let param = {
image: image,
- targetPath: LANDMARK_PATH
+ brief: brief,
+ targetPath: CUSTOM_DISH_ADD_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
+
/**
- * 花卉识别接口
+ * 自定义菜品识别—检索
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * top_num 返回预测得分top结果数,默认为5
- * baike_num 返回百科信息的结果数,默认不返回
* @return {Promise} - 标准Promise对象
*/
- flower(image, options) {
+ customDishesSearch(image, options) {
let param = {
image: image,
- targetPath: FLOWER_PATH
+ targetPath: CUSTOM_DISH_SEARCH_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 食材识别接口
+ * 自定义菜品识别—删除
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * top_num 返回预测得分top结果数,如果为空或小于等于0默认为5;如果大于20默认20
* @return {Promise} - 标准Promise对象
*/
- ingredient(image, options) {
+ customDishesDeleteImage(image, options) {
let param = {
image: image,
- targetPath: INGREDIENT_PATH
+ targetPath: CUSTOM_DISH_DELETE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 红酒识别接口
+ * 自定义菜品识别—删除
*
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param {string} cont_sign - 图片签名
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- redwine(image, options) {
+ customDishesDeleteContSign(cont_sign, options) {
let param = {
- image: image,
- targetPath: REDWINE_PATH
+ cont_sign: cont_sign,
+ targetPath: CUSTOM_DISH_DELETE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
+
/**
- * 货币识别接口
+ * 图像多主体检测
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- currency(image, options) {
+ multiObjectDetect(image, options) {
let param = {
image: image,
- targetPath: CURRENCY_PATH
+ targetPath: MULTI_OBJECT_DETECT_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
+
+
+ // /**
+ // * 组合接口-image
+ // *
+ // * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ // * @param {Object} options - 可选参数对象,key: value都为string类型
+ // * @description options - options列表:
+ // * @return {Promise} - 标准Promise对象
+ // */
+ // combinationByImage(image, options) {
+ // let param = {
+ // image: image,
+ // scenes: scenes,
+ // targetPath: COMBINATION_PATH
+ // };
+ // return this.commonImpl(objectTools.merge(param, options));
+ // }
+ //
+ // /**
+ // * 组合接口-imageUrl
+ // *
+ // * @param {string} imgUrl - 图片地址
+ // * @param {[]} scenes - 场景
+ // * @param {Object} options - 可选参数对象,key: value都为string类型
+ // * @description options - options列表:
+ // * @return {Promise} - 标准Promise对象
+ // */
+ // combinationByImageUrl(imgUrl, scenes, options) {
+ // let param = {
+ // imgUrl: imgUrl,
+ // scenes: scenes,
+ // targetPath: COMBINATION_PATH
+ // };
+ // return this.commonImpl(objectTools.merge(param, options));
+ // }
}
module.exports = AipImageClassify;
diff --git a/src/AipImageProcess.js b/src/AipImageProcess.js
deleted file mode 100644
index 31e5899..0000000
--- a/src/AipImageProcess.js
+++ /dev/null
@@ -1,140 +0,0 @@
-'use strict';
-/**
- * Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- *
- * @file AipImageProcess.js
- * @author baidu aip
- */
-
-const BaseClient = require('./client/baseClient');
-
-const RequestInfo = require('./client/requestInfo');
-
-const HttpClient = require('./http/httpClient');
-
-const objectTools = require('./util/objectTools');
-
-const METHOD_POST = 'POST';
-
-const IMAGE_QUALITY_ENHANCE_PATH = '/rest/2.0/image-process/v1/image_quality_enhance';
-const DEHAZE_PATH = '/rest/2.0/image-process/v1/dehaze';
-const CONTRAST_ENHANCE_PATH = '/rest/2.0/image-process/v1/contrast_enhance';
-const COLOURIZE_PATH = '/rest/2.0/image-process/v1/colourize';
-const STRETCH_RESTORE_PATH = '/rest/2.0/image-process/v1/stretch_restore';
-
-
-/**
- * AipImageProcess类
- *
- * @class
- * @extends BaseClient
- * @constructor
- * @param {string} appid appid.
- * @param {string} ak access key.
- * @param {string} sk security key.
- */
-class AipImageProcess extends BaseClient {
- constructor(appId, ak, sk) {
- super(appId, ak, sk);
- }
- commonImpl(param) {
- let httpClient = new HttpClient();
- let apiUrl = param.targetPath;
- delete param.targetPath;
- let requestInfo = new RequestInfo(apiUrl,
- param, METHOD_POST);
- return this.doRequest(requestInfo, httpClient);
- }
-
- /**
- * 图像无损放大接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- imageQualityEnhance(image, options) {
- let param = {
- image: image,
- targetPath: IMAGE_QUALITY_ENHANCE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 图像去雾接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- dehaze(image, options) {
- let param = {
- image: image,
- targetPath: DEHAZE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 图像对比度增强接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- contrastEnhance(image, options) {
- let param = {
- image: image,
- targetPath: CONTRAST_ENHANCE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 黑白图像上色接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- colourize(image, options) {
- let param = {
- image: image,
- targetPath: COLOURIZE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 拉伸图像恢复接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- stretchRestore(image, options) {
- let param = {
- image: image,
- targetPath: STRETCH_RESTORE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-}
-
-module.exports = AipImageProcess;
-
diff --git a/src/AipImageSearch.js b/src/AipImageSearch.js
index e6faaca..a4a4c55 100644
--- a/src/AipImageSearch.js
+++ b/src/AipImageSearch.js
@@ -27,17 +27,20 @@ const METHOD_POST = 'POST';
const SAME_HQ_ADD_PATH = '/rest/2.0/realtime_search/same_hq/add';
const SAME_HQ_SEARCH_PATH = '/rest/2.0/realtime_search/same_hq/search';
-const SAME_HQ_UPDATE_PATH = '/rest/2.0/realtime_search/same_hq/update';
const SAME_HQ_DELETE_PATH = '/rest/2.0/realtime_search/same_hq/delete';
const SIMILAR_ADD_PATH = '/rest/2.0/image-classify/v1/realtime_search/similar/add';
const SIMILAR_SEARCH_PATH = '/rest/2.0/image-classify/v1/realtime_search/similar/search';
-const SIMILAR_UPDATE_PATH = '/rest/2.0/image-classify/v1/realtime_search/similar/update';
const SIMILAR_DELETE_PATH = '/rest/2.0/image-classify/v1/realtime_search/similar/delete';
const PRODUCT_ADD_PATH = '/rest/2.0/image-classify/v1/realtime_search/product/add';
const PRODUCT_SEARCH_PATH = '/rest/2.0/image-classify/v1/realtime_search/product/search';
-const PRODUCT_UPDATE_PATH = '/rest/2.0/image-classify/v1/realtime_search/product/update';
const PRODUCT_DELETE_PATH = '/rest/2.0/image-classify/v1/realtime_search/product/delete';
+const PICTURE_BOOK_ADD_PATH = "/rest/2.0/imagesearch/v1/realtime_search/picturebook/add";
+const PICTURE_BOOK_SEARCH_PATH = "/rest/2.0/imagesearch/v1/realtime_search/picturebook/search";
+const PICTURE_BOOK_DELETE_PATH = "/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete"
+const PICTURE_BOOK_UPDATE_PATH = "/rest/2.0/imagesearch/v1/realtime_search/picturebook/update"
+
+
/**
* AipImageSearch类
@@ -66,35 +69,15 @@ class AipImageSearch extends BaseClient {
* 相同图检索—入库接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {string} brief - 检索时原样带回,最长256B。
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
+ * brief 检索时原样带回,最长256B。
* tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
* @return {Promise} - 标准Promise对象
*/
- sameHqAdd(image, brief, options) {
+ sameHqAdd(image, options) {
let param = {
image: image,
- brief: brief,
- targetPath: SAME_HQ_ADD_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 相同图检索—入库接口
- *
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
- * @param {string} brief - 检索时原样带回,最长256B。
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
- * @return {Promise} - 标准Promise对象
- */
- sameHqAddUrl(url, brief, options) {
- let param = {
- url: url,
- brief: brief,
targetPath: SAME_HQ_ADD_PATH
};
return this.commonImpl(objectTools.merge(param, options));
@@ -120,80 +103,6 @@ class AipImageSearch extends BaseClient {
return this.commonImpl(objectTools.merge(param, options));
}
- /**
- * 相同图检索—检索接口
- *
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
- * tag_logic 检索时tag之间的逻辑, 0:逻辑and,1:逻辑or
- * pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条
- * rn 分页功能,截取条数,例:250
- * @return {Promise} - 标准Promise对象
- */
- sameHqSearchUrl(url, options) {
- let param = {
- url: url,
- targetPath: SAME_HQ_SEARCH_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 相同图检索—更新接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
- * @return {Promise} - 标准Promise对象
- */
- sameHqUpdate(image, options) {
- let param = {
- image: image,
- targetPath: SAME_HQ_UPDATE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 相同图检索—更新接口
- *
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
- * @return {Promise} - 标准Promise对象
- */
- sameHqUpdateUrl(url, options) {
- let param = {
- url: url,
- targetPath: SAME_HQ_UPDATE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 相同图检索—更新接口
- *
- * @param {string} contSign - 图片签名
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
- * @return {Promise} - 标准Promise对象
- */
- sameHqUpdateContSign(contSign, options) {
- let param = {
- cont_sign: contSign,
- targetPath: SAME_HQ_UPDATE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
/**
* 相同图检索—删除接口
*
@@ -213,23 +122,7 @@ class AipImageSearch extends BaseClient {
/**
* 相同图检索—删除接口
*
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- sameHqDeleteByUrl(url, options) {
- let param = {
- url: url,
- targetPath: SAME_HQ_DELETE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 相同图检索—删除接口
- *
- * @param {string} contSign - 图片签名
+ * @param {string} contSign - 图片签名(和image二选一,image优先级更高)
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
@@ -246,35 +139,15 @@ class AipImageSearch extends BaseClient {
* 相似图检索—入库接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {string} brief - 检索时原样带回,最长256B。
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
+ * brief 检索时原样带回,最长256B。
* tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
* @return {Promise} - 标准Promise对象
*/
- similarAdd(image, brief, options) {
+ similarAdd(image, options) {
let param = {
image: image,
- brief: brief,
- targetPath: SIMILAR_ADD_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 相似图检索—入库接口
- *
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
- * @param {string} brief - 检索时原样带回,最长256B。
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
- * @return {Promise} - 标准Promise对象
- */
- similarAddUrl(url, brief, options) {
- let param = {
- url: url,
- brief: brief,
targetPath: SIMILAR_ADD_PATH
};
return this.commonImpl(objectTools.merge(param, options));
@@ -301,311 +174,267 @@ class AipImageSearch extends BaseClient {
}
/**
- * 相似图检索—检索接口
- *
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
- * tag_logic 检索时tag之间的逻辑, 0:逻辑and,1:逻辑or
- * pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条
- * rn 分页功能,截取条数,例:250
- * @return {Promise} - 标准Promise对象
- */
- similarSearchUrl(url, options) {
- let param = {
- url: url,
- targetPath: SIMILAR_SEARCH_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 相似图检索—更新接口
+ * 相似图检索—删除接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
* @return {Promise} - 标准Promise对象
*/
- similarUpdate(image, options) {
+ similarDeleteByImage(image, options) {
let param = {
image: image,
- targetPath: SIMILAR_UPDATE_PATH
+ targetPath: SIMILAR_DELETE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 相似图检索—更新接口
+ * 相似图检索—删除接口
*
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
+ * @param {string} contSign - 图片签名(和image二选一,image优先级更高)
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
* @return {Promise} - 标准Promise对象
*/
- similarUpdateUrl(url, options) {
+ similarDeleteBySign(contSign, options) {
let param = {
- url: url,
- targetPath: SIMILAR_UPDATE_PATH
+ cont_sign: contSign,
+ targetPath: SIMILAR_DELETE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 相似图检索—更新接口
+ * 商品检索—入库接口
*
- * @param {string} contSign - 图片签名
+ * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索
+ * brief 检索时原样带回,最长256B。**请注意,检索接口不返回原图,仅反馈当前填写的brief信息,所以调用该入库接口时,brief信息请尽量填写可关联至本地图库的图片id或者图片url、图片名称等信息**
+ * class_id1 商品分类维度1,支持1-60范围内的整数。检索时可圈定该分类维度进行检索
+ * class_id2 商品分类维度1,支持1-60范围内的整数。检索时可圈定该分类维度进行检索
* @return {Promise} - 标准Promise对象
*/
- similarUpdateContSign(contSign, options) {
+ productAdd(image, options) {
let param = {
- cont_sign: contSign,
- targetPath: SIMILAR_UPDATE_PATH
+ image: image,
+ targetPath: PRODUCT_ADD_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 相似图检索—删除接口
+ * 商品检索—检索接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
+ * class_id1 商品分类维度1,支持1-60范围内的整数。检索时可圈定该分类维度进行检索
+ * class_id2 商品分类维度1,支持1-60范围内的整数。检索时可圈定该分类维度进行检索
+ * pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条
+ * rn 分页功能,截取条数,例:250
* @return {Promise} - 标准Promise对象
*/
- similarDeleteByImage(image, options) {
+ productSearch(image, options) {
let param = {
image: image,
- targetPath: SIMILAR_DELETE_PATH
+ targetPath: PRODUCT_SEARCH_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 相似图检索—删除接口
+ * 商品检索—删除接口
*
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
+ * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- similarDeleteByUrl(url, options) {
+ productDeleteByImage(image, options) {
let param = {
- url: url,
- targetPath: SIMILAR_DELETE_PATH
+ image: image,
+ targetPath: PRODUCT_DELETE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 相似图检索—删除接口
+ * 商品检索—删除接口
*
- * @param {string} contSign - 图片签名
+ * @param {string} contSign - 图片签名(和image二选一,image优先级更高)
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- similarDeleteBySign(contSign, options) {
+ productDeleteBySign(contSign, options) {
let param = {
cont_sign: contSign,
- targetPath: SIMILAR_DELETE_PATH
+ targetPath: PRODUCT_DELETE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 商品检索—入库接口
+ * 绘本图片搜索—入库-image
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {string} brief - 检索时原样带回,最长256B。**请注意,检索接口不返回原图,仅反馈当前填写的brief信息,所以调用该入库接口时,brief信息请尽量填写可关联至本地图库的图片id或者图片url、图片名称等信息**
+ * @param {string} brief - 简介
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * class_id1 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索
- * class_id2 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索
* @return {Promise} - 标准Promise对象
*/
- productAdd(image, brief, options) {
+ pictureBookAddImage(image, brief, options) {
let param = {
- image: image,
- brief: brief,
- targetPath: PRODUCT_ADD_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ image : image,
+ brief : brief,
+ targetPath: PICTURE_BOOK_ADD_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
/**
- * 商品检索—入库接口
+ * 绘本图片搜索—入库-url
*
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
- * @param {string} brief - 检索时原样带回,最长256B。**请注意,检索接口不返回原图,仅反馈当前填写的brief信息,所以调用该入库接口时,brief信息请尽量填写可关联至本地图库的图片id或者图片url、图片名称等信息**
+ * @param {string} url - 图片地址
+ * @param {string} brief - 简介
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * class_id1 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索
- * class_id2 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索
* @return {Promise} - 标准Promise对象
*/
- productAddUrl(url, brief, options) {
+ pictureBookAddUrl(url, brief, options) {
let param = {
url: url,
- brief: brief,
- targetPath: PRODUCT_ADD_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ brief : brief,
+ targetPath: PICTURE_BOOK_ADD_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
/**
- * 商品检索—检索接口
+ * 绘本图片搜索—检索-image
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * class_id1 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索
- * class_id2 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索
- * pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条
- * rn 分页功能,截取条数,例:250
* @return {Promise} - 标准Promise对象
*/
- productSearch(image, options) {
+ pictureBookSearchImage(image, options) {
let param = {
- image: image,
- targetPath: PRODUCT_SEARCH_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ image : image,
+ targetPath: PICTURE_BOOK_SEARCH_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
/**
- * 商品检索—检索接口
+ * 绘本图片搜索—检索-url
*
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
+ * @param {string} url - 图片地址
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * class_id1 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索
- * class_id2 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索
- * pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条
- * rn 分页功能,截取条数,例:250
* @return {Promise} - 标准Promise对象
*/
- productSearchUrl(url, options) {
+ pictureBookSearchUrl(url, options) {
let param = {
url: url,
- targetPath: PRODUCT_SEARCH_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ targetPath: PICTURE_BOOK_SEARCH_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
/**
- * 商品检索—更新接口
+ * 绘本图片搜索—更新-image
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * class_id1 更新的商品分类1,支持1-65535范围内的整数。
- * class_id2 更新的商品分类2,支持1-65535范围内的整数。
* @return {Promise} - 标准Promise对象
*/
- productUpdate(image, options) {
+ pictureBookUpdate(image, options) {
let param = {
- image: image,
- targetPath: PRODUCT_UPDATE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ image : image,
+ targetPath: PICTURE_BOOK_UPDATE_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
+
/**
- * 商品检索—更新接口
+ * 绘本图片搜索—更新-url
*
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
+ * @param {string} url - 图片地址
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * class_id1 更新的商品分类1,支持1-65535范围内的整数。
- * class_id2 更新的商品分类2,支持1-65535范围内的整数。
* @return {Promise} - 标准Promise对象
*/
- productUpdateUrl(url, options) {
+ pictureBookUpdateUrl(url, options) {
let param = {
url: url,
- targetPath: PRODUCT_UPDATE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ targetPath: PICTURE_BOOK_UPDATE_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
/**
- * 商品检索—更新接口
+ * 绘本图片搜索—更新-cont_sign
*
- * @param {string} contSign - 图片签名
+ * @param {string} contSign - 图片签名(和image二选一,image优先级更高)
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
- * class_id1 更新的商品分类1,支持1-65535范围内的整数。
- * class_id2 更新的商品分类2,支持1-65535范围内的整数。
* @return {Promise} - 标准Promise对象
*/
- productUpdateContSign(contSign, options) {
+ pictureBookUpdateContSign(contSign, options) {
let param = {
- cont_sign: contSign,
- targetPath: PRODUCT_UPDATE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ cont_sign: cont_sign,
+ targetPath: PICTURE_BOOK_UPDATE_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
/**
- * 商品检索—删除接口
+ * 绘本图片搜索—删除-image
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- productDeleteByImage(image, options) {
+ pictureBookDeleteByImage(image, options) {
let param = {
- image: image,
- targetPath: PRODUCT_DELETE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ image : image,
+ targetPath: PICTURE_BOOK_DELETE_PATH
+ }
+
+ return this.commonImpl(objectTools.merge(param, options))};
/**
- * 商品检索—删除接口
+ * 绘本图片搜索—删除-url
*
- * @param {string} url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
+ const PICTURE_BOOK_DELETE_PATH = "/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete";
+const PICTURE_BOOK_UPDATE_PATH = "/rest/2.0/imagesearch/v1/realtime_search/picturebook/update";
+* @param {string} url - 图片地址
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- productDeleteByUrl(url, options) {
+ pictureBookDeleteByUrl(url, options) {
let param = {
url: url,
- targetPath: PRODUCT_DELETE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ targetPath: PICTURE_BOOK_DELETE_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
/**
- * 商品检索—删除接口
+ * 绘本图片搜索—删除-cont_sign
*
- * @param {string} contSign - 图片签名
+ * @param {string} contSign - 图片签名(和image二选一,image优先级更高)
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- productDeleteBySign(contSign, options) {
+ pictureBookDeleteBySign(contSign, options) {
let param = {
cont_sign: contSign,
- targetPath: PRODUCT_DELETE_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
+ targetPath: PICTURE_BOOK_DELETE_PATH
+ }
+ return this.commonImpl(objectTools.merge(param, options))};
+
+
}
module.exports = AipImageSearch;
diff --git a/src/AipNlp.js b/src/AipNlp.js
index 669fbff..c386c1a 100644
--- a/src/AipNlp.js
+++ b/src/AipNlp.js
@@ -36,10 +36,6 @@ const COMMENT_TAG_PATH = '/rpc/2.0/nlp/v2/comment_tag';
const SENTIMENT_CLASSIFY_PATH = '/rpc/2.0/nlp/v1/sentiment_classify';
const KEYWORD_PATH = '/rpc/2.0/nlp/v1/keyword';
const TOPIC_PATH = '/rpc/2.0/nlp/v1/topic';
-const ECNET_PATH = '/rpc/2.0/nlp/v1/ecnet';
-const EMOTION_PATH = '/rpc/2.0/nlp/v1/emotion';
-const NEWS_SUMMARY_PATH = '/rpc/2.0/nlp/v1/news_summary';
-const ADDRESS_PATH = '/rpc/2.0/nlp/v1/address';
/**
@@ -252,74 +248,6 @@ class AipNlp extends BaseClient {
};
return this.commonImpl(objectTools.merge(param, options));
}
-
- /**
- * 文本纠错接口
- *
- * @param {string} text - 待纠错文本,输入限制511字节
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- ecnet(text, options) {
- let param = {
- text: text,
- targetPath: ECNET_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 对话情绪识别接口接口
- *
- * @param {string} text - 待识别情感文本,输入限制512字节
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * scene default(默认项-不区分场景),talk(闲聊对话-如度秘聊天等),task(任务型对话-如导航对话等),customer_service(客服对话-如电信/银行客服等)
- * @return {Promise} - 标准Promise对象
- */
- emotion(text, options) {
- let param = {
- text: text,
- targetPath: EMOTION_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 新闻摘要接口接口
- *
- * @param {string} content - 字符串(限3000字符数以内)字符串仅支持GBK编码,长度需小于3000字符数(即6000字节),请输入前确认字符数没有超限,若字符数超长会返回错误。正文中如果包含段落信息,请使用"\n"分隔,段落信息算法中有重要的作用,请尽量保留
- * @param {integer} maxSummaryLen - 此数值将作为摘要结果的最大长度。例如:原文长度1000字,本参数设置为150,则摘要结果的最大长度是150字;推荐最优区间:200-500字
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * title 字符串(限200字符数)字符串仅支持GBK编码,长度需小于200字符数(即400字节),请输入前确认字符数没有超限,若字符数超长会返回错误。标题在算法中具有重要的作用,若文章确无标题,输入参数的“标题”字段为空即可
- * @return {Promise} - 标准Promise对象
- */
- newsSummary(content, maxSummaryLen, options) {
- let param = {
- content: content,
- max_summary_len: maxSummaryLen,
- targetPath: NEWS_SUMMARY_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 地址识别接口接口
- *
- * @param {string} text - 待识别的文本内容,不超过1000字节
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- address(text, options) {
- let param = {
- text: text,
- targetPath: ADDRESS_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
}
module.exports = AipNlp;
diff --git a/src/AipOcr.js b/src/AipOcr.js
index 77d82f3..b42ff66 100644
--- a/src/AipOcr.js
+++ b/src/AipOcr.js
@@ -38,22 +38,9 @@ const VEHICLE_LICENSE_PATH = '/rest/2.0/ocr/v1/vehicle_license';
const LICENSE_PLATE_PATH = '/rest/2.0/ocr/v1/license_plate';
const BUSINESS_LICENSE_PATH = '/rest/2.0/ocr/v1/business_license';
const RECEIPT_PATH = '/rest/2.0/ocr/v1/receipt';
-const TRAIN_TICKET_PATH = '/rest/2.0/ocr/v1/train_ticket';
-const TAXI_RECEIPT_PATH = '/rest/2.0/ocr/v1/taxi_receipt';
const FORM_PATH = '/rest/2.0/ocr/v1/form';
const TABLE_RECOGNIZE_PATH = '/rest/2.0/solution/v1/form_ocr/request';
const TABLE_RESULT_GET_PATH = '/rest/2.0/solution/v1/form_ocr/get_request_result';
-const VIN_CODE_PATH = '/rest/2.0/ocr/v1/vin_code';
-const QUOTA_INVOICE_PATH = '/rest/2.0/ocr/v1/quota_invoice';
-const HOUSEHOLD_REGISTER_PATH = '/rest/2.0/ocr/v1/household_register';
-const HK_MACAU_EXITENTRYPERMIT_PATH = '/rest/2.0/ocr/v1/HK_Macau_exitentrypermit';
-const TAIWAN_EXITENTRYPERMIT_PATH = '/rest/2.0/ocr/v1/taiwan_exitentrypermit';
-const BIRTH_CERTIFICATE_PATH = '/rest/2.0/ocr/v1/birth_certificate';
-const VEHICLE_INVOICE_PATH = '/rest/2.0/ocr/v1/vehicle_invoice';
-const VEHICLE_CERTIFICATE_PATH = '/rest/2.0/ocr/v1/vehicle_certificate';
-const INVOICE_PATH = '/rest/2.0/ocr/v1/invoice';
-const AIR_TICKET_PATH = '/rest/2.0/ocr/v1/air_ticket';
-const INSURANCE_DOCUMENTS_PATH = '/rest/2.0/ocr/v1/insurance_documents';
const VAT_INVOICE_PATH = '/rest/2.0/ocr/v1/vat_invoice';
const QRCODE_PATH = '/rest/2.0/ocr/v1/qrcode';
const NUMBERS_PATH = '/rest/2.0/ocr/v1/numbers';
@@ -63,13 +50,21 @@ const BUSINESS_CARD_PATH = '/rest/2.0/ocr/v1/business_card';
const HANDWRITING_PATH = '/rest/2.0/ocr/v1/handwriting';
const CUSTOM_PATH = '/rest/2.0/solution/v1/iocr/recognise';
+const DOCANALYSIS_PATH = '/rest/2.0/ocr/v1/doc_analysis';
+const METER_PATH = '/rest/2.0/ocr/v1/meter';
+const WEBIMAGELOC_PATH = '/rest/2.0/ocr/v1/webimage_loc';
+
+const TAXI_RECEIPT_PATH = '/rest/2.0/ocr/v1/taxi_receipt';
+const VIN_CODE_PATH = '/rest/2.0/ocr/v1/vin_code';
+const TRAIN_TICKET_PATH = '/rest/2.0/ocr/v1/train_ticket';
+
/**
* AipOcr类
*
* @class
* @extends BaseClient
- * @constructor
+ * @constructor`
* @param {string} appid appid.
* @param {string} ak access key.
* @param {string} sk security key.
@@ -82,8 +77,7 @@ class AipOcr extends BaseClient {
let httpClient = new HttpClient();
let apiUrl = param.targetPath;
delete param.targetPath;
- let requestInfo = new RequestInfo(apiUrl,
- param, METHOD_POST);
+ let requestInfo = new RequestInfo(apiUrl, param, METHOD_POST);
return this.doRequest(requestInfo, httpClient);
}
@@ -409,38 +403,6 @@ class AipOcr extends BaseClient {
return this.commonImpl(objectTools.merge(param, options));
}
- /**
- * 火车票识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- trainTicket(image, options) {
- let param = {
- image: image,
- targetPath: TRAIN_TICKET_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
- /**
- * 出租车票识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
- */
- taxiReceipt(image, options) {
- let param = {
- image: image,
- targetPath: TAXI_RECEIPT_PATH
- };
- return this.commonImpl(objectTools.merge(param, options));
- }
-
/**
* 表格文字识别同步接口接口
*
@@ -491,347 +453,363 @@ class AipOcr extends BaseClient {
}
/**
- * VIN码识别接口
+ * 增值税发票识别接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- vinCode(image, options) {
+ vatInvoice(image, options) {
let param = {
image: image,
- targetPath: VIN_CODE_PATH
+ targetPath: VAT_INVOICE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 定额发票识别接口
+ * 增值税发票识别接口
*
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param {string} image - url
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- quotaInvoice(image, options) {
+ vatInvoiceUrl(image, options) {
let param = {
- image: image,
- targetPath: QUOTA_INVOICE_PATH
+ url: image,
+ targetPath: VAT_INVOICE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 户口本识别接口
+ * 增值税发票识别接口
*
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param {string} image - pdf
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- householdRegister(image, options) {
+ vatInvoicePdf(image, options) {
+ let fs = require('fs');
+ let data = fs.readFileSync(image);
+ let base64 = new Buffer(data).toString('base64');
let param = {
- image: image,
- targetPath: HOUSEHOLD_REGISTER_PATH
+ pdf_file: base64,
+ targetPath: VAT_INVOICE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 港澳通行证识别接口
+ * 二维码识别接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- HKMacauExitentrypermit(image, options) {
+ qrcode(image, options) {
let param = {
image: image,
- targetPath: HK_MACAU_EXITENTRYPERMIT_PATH
+ targetPath: QRCODE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 台湾通行证识别接口
+ * 数字识别接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
+ * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
+ * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:
- true:检测朝向;
- false:不检测朝向。
* @return {Promise} - 标准Promise对象
*/
- taiwanExitentrypermit(image, options) {
+ numbers(image, options) {
let param = {
image: image,
- targetPath: TAIWAN_EXITENTRYPERMIT_PATH
+ targetPath: NUMBERS_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 出生医学证明识别接口
+ * 彩票识别接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
+ * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
* @return {Promise} - 标准Promise对象
*/
- birthCertificate(image, options) {
+ lottery(image, options) {
let param = {
image: image,
- targetPath: BIRTH_CERTIFICATE_PATH
+ targetPath: LOTTERY_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 机动车销售发票识别接口
+ * 护照识别接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- vehicleInvoice(image, options) {
+ passport(image, options) {
let param = {
image: image,
- targetPath: VEHICLE_INVOICE_PATH
+ targetPath: PASSPORT_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 车辆合格证识别接口
+ * 名片识别接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
* @return {Promise} - 标准Promise对象
*/
- vehicleCertificate(image, options) {
+ businessCard(image, options) {
let param = {
image: image,
- targetPath: VEHICLE_CERTIFICATE_PATH
+ targetPath: BUSINESS_CARD_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 税务局通用机打发票识别接口
+ * 手写文字识别接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * location 是否输出位置信息,true:输出位置信息,false:不输出位置信息,默认false
+ * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
* @return {Promise} - 标准Promise对象
*/
- invoice(image, options) {
+ handwriting(image, options) {
let param = {
image: image,
- targetPath: INVOICE_PATH
+ targetPath: HANDWRITING_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 行程单识别接口
+ * 自定义模板文字识别接口
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param {string} templateSign - 您在自定义文字识别平台制作的模板的ID
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * location 是否输出位置信息,true:输出位置信息,false:不输出位置信息,默认false
* @return {Promise} - 标准Promise对象
*/
- airTicket(image, options) {
+ custom(image, templateSign, options) {
let param = {
image: image,
- targetPath: AIR_TICKET_PATH
+ templateSign: templateSign,
+ targetPath: CUSTOM_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
+ tableRecorgnize(image, type, timeout, interval) {
+ let self = this;
+ timeout = timeout || 20000;
+ interval = interval || 2000;
+ return this.tableBegin(image).then(function(result) {
+ if (result.error_code) {
+ return result;
+ }
+ let id = result.result[0]['request_id'];
+ let pid = null;
+ let startTime = Date.now();
+ return new Promise(function(resolve, reject) {
+ pid = setInterval(function () {
+ if (Date.now() - startTime > timeout) {
+ reject({errorMsg: 'get result timeout', requestId: id});
+ clearInterval(pid);
+ } else {
+ self.tableGetresult(id, type).then(function (result) {
+ if (result['result']['ret_code'] === 3) {
+ clearInterval(pid);
+ resolve(result);
+ }
+ });
+ }
+ }, interval);
+ })
+ });
+ }
/**
- * 保单识别接口
+ * 文档版面分析与识别
*
* @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param languageType
+ 识别语言类型,默认为CHN_ENG 可选值包括:CHN_ENG:中英文, ENG:英文
+ * @param resultType
+ 返回识别结果是按单行结果返回,还是按单字结果返回,默认为big。
+ big:返回行识别结果
+ small:返回行识别结果之上还会返回单字结果
* @param {Object} options - 可选参数对象,key: value都为string类型
* @description options - options列表:
- * rkv_business 是否进行商业逻辑处理,rue:进行商业逻辑处理,false:不进行商业逻辑处理,默认true
+ * detect_direction:
+ * 类型: string 可选值范围: true/false 说明:是否检测图像朝向,默认不检测,即:false。
+ * line_probability:
+ * 类型: string 可选值范围: true/false 说明:是否返回每行识别结果的置信度。默认为false
+ * words_type:
+ * 类型: string 可选值范围: handwring_only/handprint_mix 说明:文字类型, 默认 印刷文字识别
+ * layout_analysis:
+ * 类型: string 可选值范围: true/false 说明:是否分析文档版面:包括图、表、标题、段落的分析输出
* @return {Promise} - 标准Promise对象
*/
- insuranceDocuments(image, options) {
+ docAnalysis(image,languageType, resultType, options) {
let param = {
image: image,
- targetPath: INSURANCE_DOCUMENTS_PATH
+ language_type:languageType,
+ result_type:resultType,
+ targetPath: DOCANALYSIS_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
+
/**
- * 增值税发票识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
+ * 仪器仪表盘读数识别
+ {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param options - options列表
+ * probability:
+ * 类型: string 可选值范围: true/false 说明:是否返回每行识别结果的置信度。默认为false
+ * poly_location:
+ * 类型: string 可选值范围: true/false 说明:位置信息返回形式,默认:false
+ * @return
*/
- vatInvoice(image, options) {
+ meter(image, options) {
let param = {
image: image,
- targetPath: VAT_INVOICE_PATH
+ targetPath: METER_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
+
/**
- * 二维码识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
+ * 网络图片文字识别(含位置版)
+ * {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param options - options列表
+ * detect_direction:
+ * 类型: string 可选值范围: true/false 说明:是否检测图像朝向,默认不检测,即:false。
+ * probability:
+ * 类型: string 可选值范围: true/false 说明:是否返回每行识别结果的置信度。默认为false
+ * poly_location:
+ * 类型: string 可选值范围: handwring_only/handprint_mix 说明:是否返回文字所在区域的外接四边形的4个点坐标信息。默认为false
+ * recognize_granularity:
+ * 类型: string 可选值范围: true/false 说明:是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
+ * @return
*/
- qrcode(image, options) {
+ webimageLoc(image, options) {
let param = {
image: image,
- targetPath: QRCODE_PATH
+ targetPath: WEBIMAGELOC_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 数字识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
- * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:
- true:检测朝向;
- false:不检测朝向。
- * @return {Promise} - 标准Promise对象
+ * 出租车票识别
+ * {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param options - options列表
+ * @return
*/
- numbers(image, options) {
+ taxiReceipt(image, options) {
let param = {
image: image,
- targetPath: NUMBERS_PATH
+ targetPath: TAXI_RECEIPT_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
+
/**
- * 彩票识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
- * @return {Promise} - 标准Promise对象
+ * 出租车票识别
+ * {string} image - url
+ * @param options - options列表
+ * @return
*/
- lottery(image, options) {
+ taxiReceiptUrl(image, options) {
let param = {
- image: image,
- targetPath: LOTTERY_PATH
+ url: image,
+ targetPath: TAXI_RECEIPT_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 护照识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
+ * VIN码识别
+ * {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param options - options列表
+ * @return
*/
- passport(image, options) {
+ vinCode(image, options) {
let param = {
image: image,
- targetPath: PASSPORT_PATH
+ targetPath: VIN_CODE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 名片识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * @return {Promise} - 标准Promise对象
+ * VIN码识别
+ * {string} image - url
+ * @param options - options列表
+ * @return
*/
- businessCard(image, options) {
+ vinCodeUrl(image, options) {
let param = {
- image: image,
- targetPath: BUSINESS_CARD_PATH
+ url: image,
+ targetPath: VIN_CODE_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 手写文字识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
- * @return {Promise} - 标准Promise对象
+ * 火车票识别
+ * {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
+ * @param options - options列表
+ * @return
*/
- handwriting(image, options) {
+ trainTicket(image, options) {
let param = {
image: image,
- targetPath: HANDWRITING_PATH
+ targetPath: TRAIN_TICKET_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
/**
- * 自定义模板文字识别接口
- *
- * @param {string} image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
- * @param {Object} options - 可选参数对象,key: value都为string类型
- * @description options - options列表:
- * templateSign 您在自定义文字识别平台制作的模板的ID
- * classifierId 分类器Id。这个参数和templateSign至少存在一个,优先使用templateSign。存在templateSign时,表示使用指定模板;如果没有templateSign而有classifierId,表示使用分类器去判断使用哪个模板
- * @return {Promise} - 标准Promise对象
+ * 火车票识别
+ * {string} image - url
+ * @param options - options列表
+ * @return
*/
- custom(image, options) {
+ trainTicketUrl(image, options) {
let param = {
- image: image,
- targetPath: CUSTOM_PATH
+ url: image,
+ targetPath: TRAIN_TICKET_PATH
};
return this.commonImpl(objectTools.merge(param, options));
}
- tableRecorgnize(image, type, timeout, interval) {
- let self = this;
- timeout = timeout || 20000;
- interval = interval || 2000;
- return this.tableBegin(image).then(function(result) {
- if (result.error_code) {
- return result;
- }
- let id = result.result[0]['request_id'];
- let pid = null;
- let startTime = Date.now();
- return new Promise(function(resolve, reject) {
- pid = setInterval(function () {
- if (Date.now() - startTime > timeout) {
- reject({errorMsg: 'get result timeout', requestId: id});
- clearInterval(pid);
- } else {
- self.tableGetresult(id, type).then(function (result) {
- if (result['result']['ret_code'] === 3) {
- clearInterval(pid);
- resolve(result);
- }
- });
- }
- }, interval);
- })
- });
- }
}
module.exports = AipOcr;
+
diff --git a/src/AipSpeech.js b/src/AipSpeech.js
index bc9634d..e88299d 100644
--- a/src/AipSpeech.js
+++ b/src/AipSpeech.js
@@ -35,7 +35,6 @@ const CONTENT_TYPE_JSON = 'application/json';
const HOST_VOP = 'vop.baidu.com';
const HOST_TSN = 'tsn.baidu.com';
const PATH_VOP = '/server_api';
-const PATH_VOP_PRO = '/pro_api';
const PATH_TTS = '/text2audio';
/**
@@ -54,18 +53,6 @@ class AipSpeech extends BaseClient {
super(appId, ak, sk, {isSkipScopeCheck: true});
}
- recognizePro(buffer, format, rate, options) {
- let param = {
- speech: buffer && buffer.toString(code.BASE64),
- format: format,
- rate: rate,
- channel: 1,
- len: buffer && buffer.toString(code.BIN).length
- };
-
- return this.asrImplPro(objectTools.merge(param, options));
- }
-
recognize(buffer, format, rate, options) {
let param = {
speech: buffer && buffer.toString(code.BASE64),
@@ -90,16 +77,8 @@ class AipSpeech extends BaseClient {
}
asrImpl(param) {
- return this.asrImplPath(param, PATH_VOP);
- }
-
- asrImplPro(param) {
- return this.asrImplPath(param, PATH_VOP_PRO);
- }
-
- asrImplPath(param, url) {
let httpClient = new HttpClientVoiceASR();
- let requestInfo = new RequestInfo(url, param, METHOD_POST, false, {
+ let requestInfo = new RequestInfo(PATH_VOP, param, METHOD_POST, false, {
[httpHeader.CONTENT_TYPE]: CONTENT_TYPE_JSON
});
requestInfo.setHost(HOST_VOP);
diff --git a/src/client/requestInfo.js b/src/client/requestInfo.js
index 277592f..7721585 100644
--- a/src/client/requestInfo.js
+++ b/src/client/requestInfo.js
@@ -21,6 +21,7 @@ const CloudAuth = require('../auth/cloudAuth');
const HOST_DEFAULT = 'aip.baidubce.com';
const CONTENT_TYPE_FORMDEFAULT = 'application/x-www-form-urlencoded';
+const CONTENT_TYPE_JSON = 'application/json;charset=utf-8';
const SYMBOL_QUERYSTRING_PREFIX = '?aipSdk=node&access_token=';
const SYMBOL_QUERYSTRING_PREFIX_BCE = '?aipSdk=node';
diff --git a/src/http/httpClient.js b/src/http/httpClient.js
index 270284a..43b7eac 100644
--- a/src/http/httpClient.js
+++ b/src/http/httpClient.js
@@ -40,7 +40,22 @@ class HttpClient {
return this.req(options);
}
+
+ postWithInfoForJson(requestInfo) {
+ let options = {
+ method: requestInfo.method,
+ url: requestInfo.getUrl(),
+ json: true,
+ headers: requestInfo.headers,
+ body: JSON.stringify(requestInfo.params),
+ timeout: HttpClient.DEFAULT_TIMEOUT
+ };
+
+ return this.req(options);
+ }
+
req(options) {
+
// 首先处理设置INTERCEPTOR的情况
if (objectTools.isFunction(HttpClient.REQUEST_INTERCEPTOR)) {
options = HttpClient.REQUEST_INTERCEPTOR(options);
@@ -91,6 +106,6 @@ HttpClient.REQUEST_GLOBAL_OPTIONS = null;
HttpClient.REQUEST_INTERCEPTOR = null;
-HttpClient.DEFAULT_TIMEOUT = 10000;
+HttpClient.DEFAULT_TIMEOUT = 60000;
module.exports = HttpClient;
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index 8dd0e8c..c53f866 100644
--- a/src/index.js
+++ b/src/index.js
@@ -17,16 +17,13 @@
module.exports = {
- bodyanalysis: require('./AipBodyAnalysis'),
imageSearch: require('./AipImageSearch'),
imageClassify: require('./AipImageClassify'),
- imageProcess: require('./AipImageProcess'),
contentCensor: require('./AipContentCensor'),
face: require('./AipFace'),
ocr: require('./AipOcr'),
nlp: require('./AipNlp'),
kg: require('./AipKg'),
speech: require('./AipSpeech'),
- easydl: require('./AipEasyDL'),
HttpClient: require('./http/httpClient')
};
\ No newline at end of file
diff --git a/test/apiRequest.js b/test/apiRequest.js
index 8854e4a..ad5cb84 100644
--- a/test/apiRequest.js
+++ b/test/apiRequest.js
@@ -6,9 +6,7 @@ let exp = require('../');
let services = [
'contentCensor',
- 'bodyanalysis',
'imageSearch',
- 'imageProcess',
'imageClassify',
'face',
'ocr',
diff --git a/test/require.js b/test/require.js
index ebdcbe7..e66c728 100644
--- a/test/require.js
+++ b/test/require.js
@@ -5,8 +5,6 @@ let should = require('should');
let services = [
'contentCensor',
'imageSearch',
- 'bodyanalysis',
- 'imageProcess',
'imageClassify',
'face',
'ocr',
@@ -15,6 +13,46 @@ let services = [
'speech'
];
+const fs = require('fs');
+const path = require('path');
+const mimeType = require('mime-types');
+// const chalk = require('chalk'); // 带色彩的控制台输出
+
+const filePath = '/Users/wuqiqing/projects/baidu/aip/sdks/node-sdk/test_sample/assets/OCR'
+
+// 读取图片文件转换为 base64 编码,并打印到控制台
+function parse(file) {
+ let filePath = path.resolve(file); // 原始文件地址
+ // let fileName = filePath.split('\\').slice(-1)[0].split('.'); // 提取文件名
+ // let fileMimeType = mimeType.lookup(filePath); // 获取文件的 memeType
+
+ // 如果不是图片文件,则退出
+ // if (!fileMimeType.toString().includes('image')) {
+ // console.log(chalk.red(`Failed! ${filePath}:\tNot image file!`));
+ // return;
+ // }
+
+ // 读取文件数据
+ let data = fs.readFileSync(filePath);
+ data = Buffer.from(data).toString('base64');
+
+ // // 转换为 data:image/jpeg;base64,***** 格式的字符串
+ // let base64 = 'data:' + fileMimeType + ';base64,' + data;
+ //
+ // // 创建输出目录
+ // let outPath = path.resolve('./base64/');
+ // let outFileName = `${fileName.join('-')}.txt`;
+ // let outFile = path.join(outPath, outFileName);
+ // if (fs.existsSync(outPath)) {
+ // saveData(base64, outFile, filePath, outFileName);
+ // } else {
+ // mkdirp(outPath, () => {
+ // saveData(base64, outFile, filePath, outFileName);
+ // });
+ // }
+ return data;
+}
+
it('should not throw error when require all modules', function() {
should.doesNotThrow(function () {
let exp = require('../');
@@ -24,15 +62,87 @@ it('should not throw error when require all modules', function() {
describe('should all export is valid', function() {
should.doesNotThrow(function () {
let exp = require('../');
- services.forEach(function(serviceNm) {
- // each service should be a constructor
- it("service:" + serviceNm, function () {
- exp[serviceNm].should.instanceof(Function);
- })
- });
- it("HttpClient ", function () {
- // extra exports HttpClient is Function
- exp.HttpClient.should.instanceof(Function);
+ // services.forEach(function(serviceNm) {
+ // // each service should be a constructor
+ // it("service:" + serviceNm, function () {
+ // exp[serviceNm].should.instanceof(Function);
+ // })
+ // });
+ // it("HttpClient ", function () {
+ // // extra exports HttpClient is Function
+ // exp.HttpClient.should.instanceof(Function);
+ // });
+
+
+ it(' imageClassify ', (done) => {
+ let tmp = new exp.imageClassify("", "d18289e60b6a44c281f8985d5106586e", "0f15a705e2ff4400a3757b4acd88114d");
+ // let stat = fs.statSync(filePath+'/webimageLoc.png');
+ // let data = parse(filePath+'/webimageLoc.png')
+ let url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1595939748737&di=05d4226499eb67595c713035e03675fc&imgtype=0&src=http%3A%2F%2Fethn.cssn.cn%2Fmzx%2Fmzxtpxw%2F201603%2FW020160329761657988474.jpg";
+ let element = ['animal'];
+ let p = tmp.combinationByImageUrl(url, element).then((res) => {
+ console.log(res);
+ // done();
+ }).catch((err) => {
+ console.log(err);
+ // done(err);
+ });
+ // console.log(1);
+ // console.log(2);
+ // for(let i = 0;i < 100000;i++){
+ // console.log(i);
+ // }
});
+
+ // it(' ocr docAnalysis ', (done) => {
+ // let tmp = new exp.ocr("", "d18289e60b6a44c281f8985d5106586e", "0f15a705e2ff4400a3757b4acd88114d");
+ // let stat = fs.statSync(filePath+'/webimageLoc.png');
+ // let data = parse(filePath + '/docAnalysis.png')
+ // let p = tmp.docAnalysis(data).then((res) => {
+ // console.log("docAnalysis: ");
+ // console.log(res);
+ // done();
+ // }).catch((err) => {
+ // console.log(err);
+ // done(err);
+ // });
+ // });
+ //
+ // function A () {
+ //
+ // }
+ // A.hello = 2;
+ //
+ // let a = new A();
+ // let b = {};
+ // let c = Object();
+ // let d = 1;
+ //
+ // d.toFixed();
+ // let e = 'hello word';
+ // e.toLocaleUpperCase();
+ //
+ // it(' ocr meter ', (done) => {
+ // let tmp = new exp.ocr("", "d18289e60b6a44c281f8985d5106586e", "0f15a705e2ff4400a3757b4acd88114d");
+ // // let stat = fs.statSync(filePath+'/webimageLoc.png');
+ // let data = parse(filePath + '/meter.png')
+ // let p = tmp.meter(data).then((res) => {
+ // console.log(res);
+ // done();
+ // }).catch((err) => {
+ // console.log(err);
+ // done(err);
+ // });
+ // });
+ //
+ // // it(' ocr docAnalysis ', function () {
+ // // let tmp = new exp.ocr("", "d18289e60b6a44c281f8985d5106586e", "0f15a705e2ff4400a3757b4acd88114d");
+ // // console.log(tmp.docAnalysis(''))
+ // // });
+ // // it(' ocr webimageLoc ', function () {
+ // // let tmp = new exp.ocr("", "d18289e60b6a44c281f8985d5106586e", "0f15a705e2ff4400a3757b4acd88114d");
+ // // console.log(tmp.meter(''))
+ // // });
+
});
});