Skip to content

Commit 8036625

Browse files
authored
upd: 增加万象文档预览、内容识别demo (#171)
* upd: 增加部分万象demo * upd: 更新demo * upd: 还原sts
1 parent 38e4e06 commit 8036625

File tree

2 files changed

+318
-2
lines changed

2 files changed

+318
-2
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ npm i cos-js-sdk-v5 --save
100100
## Start Demo
101101
```
102102
1. git clone cos-js-sdk-v5 至本地
103-
2. cd cos-js-sdk-v5
104-
3. 修改 server 文件夹中 sts.js 或 sts.php 中的 secretId、secretKey、bucket、region 配置
103+
2. cd cos-js-sdk-v5 进入根目录后执行:npm install
104+
3. 修改 server 文件夹中 sts.js 或 sts.php 中的 secretId、secretKey、bucket、region 配置;注意allowPrefix和allowActions需要设置适当的权限
105105
4. npm run server # 用 node 启动服务
106106
5. 浏览器输入 http://127.0.0.1:3000/ 即可进行 demo 演示
107107
```

demo/demo.js

Lines changed: 316 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2043,6 +2043,296 @@ function getWebpageAuditingResult() {
20432043
});
20442044
}
20452045

2046+
// 查询已经开通文档预览的存储桶
2047+
function describeDocProcessBuckets() {
2048+
var host = 'ci.' + config.Region + '.myqcloud.com/docbucket';
2049+
var url = 'https://' + host;
2050+
cos.request({
2051+
Method: 'GET',
2052+
Key: 'docbucket',
2053+
Url: url,
2054+
Query: {
2055+
// regions: '', /* 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing */
2056+
// bucketNames: '', /* 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索 */
2057+
// bucketName: '', /* 非必须,存储桶名称前缀,前缀搜索 */
2058+
// pageNumber: 1, /* 非必须,第几页 */
2059+
// pageSize: 10, /* 非必须,每页个数 */
2060+
},
2061+
},
2062+
function(err, data){
2063+
logger.log(err || data);
2064+
});
2065+
}
2066+
2067+
// 获取文档预览url
2068+
function getDocPreviewUrl() {
2069+
cos.getObjectUrl({
2070+
Bucket: config.Bucket, // Bucket 格式:test-1250000000
2071+
Region: config.Region,
2072+
Key: '1/文档.docx',
2073+
Query: {
2074+
'ci-process': 'doc-preview', /* 必须,数据万象处理能力,文档预览固定为 doc-preview */
2075+
srcType: 'docx', /* 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值 */
2076+
// page: '', /* 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图 */
2077+
// dstType: '', /* 非必须,转换输出目标文件类型 */
2078+
},
2079+
}, function(err, data) {
2080+
logger.log(err || data);
2081+
if (err) {
2082+
console.log(err);
2083+
} else {
2084+
var url = data.Url;
2085+
console.log(url);
2086+
}
2087+
});
2088+
}
2089+
2090+
// 查询文档转码队列
2091+
function describeDocProcessQueues() {
2092+
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue';
2093+
var url = 'https://' + host;
2094+
cos.request({
2095+
Method: 'GET',
2096+
Key: 'docqueue',
2097+
Url: url,
2098+
Query: {
2099+
// queueIds: '', /* 非必须,队列 ID,以“,”符号分割字符串 */
2100+
// state: '', /* 非必须,1=Active,2=Paused */
2101+
// pageNumber: 1, /* 非必须,第几页 */
2102+
// pageSize: 2, /* 非必须,每页个数 */
2103+
},
2104+
},
2105+
function(err, data){
2106+
logger.log(err || data);
2107+
});
2108+
}
2109+
2110+
// 更新文档预览队列
2111+
function updateDocProcessQueue() {
2112+
var queueId = 'pa2e2c3d3fae042de909cafc16f1d801b'; // 替换成自己的队列id
2113+
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue/' + queueId;
2114+
var url = 'https://' + host;
2115+
var body = COS.util.json2xml({
2116+
Request: {
2117+
Name: 'queue-doc-process-1', // 替换成自己的队列name
2118+
QueueID: queueId,
2119+
State: 'Active',
2120+
NotifyConfig: {
2121+
State: 'Off',
2122+
}
2123+
}
2124+
});
2125+
cos.request({
2126+
Method: 'PUT',
2127+
Key: 'docqueue/' + queueId,
2128+
Url: url,
2129+
Body: body,
2130+
ContentType: 'application/xml',
2131+
},
2132+
function(err, data){
2133+
logger.log(err || data);
2134+
});
2135+
}
2136+
2137+
// 提交文档转码任务
2138+
function createDocProcessJobs() {
2139+
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
2140+
var url = 'https://' + host;
2141+
var body = COS.util.json2xml({
2142+
Request: {
2143+
Tag: 'DocProcess',
2144+
Input: {
2145+
Object: '1/文档.docx', // 存在cos里的路径
2146+
},
2147+
Operation: {
2148+
DocProcess: {
2149+
TgtType: 'jpg',
2150+
},
2151+
Output: {
2152+
Bucket: config.Bucket,
2153+
Region: config.Region,
2154+
Object: '1/文档转码_${Number}.jpg', // 转码后存到cos的路径
2155+
},
2156+
},
2157+
QueueId: 'pa2e2c3d3fae042de909cafc16f1d801b', // 替换成自己的queueId
2158+
}
2159+
});
2160+
cos.request({
2161+
Method: 'POST',
2162+
Key: 'doc_jobs',
2163+
Url: url,
2164+
Body: body,
2165+
ContentType: 'application/xml',
2166+
},
2167+
function(err, data){
2168+
logger.log(err || data);
2169+
});
2170+
}
2171+
2172+
// 查询指定的文档预览任务
2173+
function describeDocProcessJob() {
2174+
var jobId = 'd87fbabd07b8611ed974b3f4b4064872e'; // 替换成自己的jogId
2175+
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs/' + jobId;
2176+
var url = 'https://' + host;
2177+
cos.request({
2178+
Method: 'GET',
2179+
Key: 'doc_jobs/' + jobId,
2180+
Url: url,
2181+
},
2182+
function(err, data){
2183+
logger.log(err || data);
2184+
});
2185+
}
2186+
2187+
// 拉取符合条件的文档预览任务
2188+
function describeDocProcessJobs() {
2189+
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
2190+
var url = 'https://' + host;
2191+
cos.request({
2192+
Method: 'GET',
2193+
Key: 'doc_jobs',
2194+
Url: url,
2195+
Query: {
2196+
queueId: 'pa2e2c3d3fae042de909cafc16f1d801b', // 替换成自己的queueId
2197+
tag: 'DocProcess',
2198+
},
2199+
},
2200+
function(err, data){
2201+
logger.log(err || data);
2202+
});
2203+
}
2204+
2205+
// 文档转 HTML
2206+
function getDocHtmlUrl() {
2207+
cos.getObjectUrl({
2208+
Bucket: config.Bucket, // Bucket 格式:test-1250000000
2209+
Region: config.Region,
2210+
Key: '1/文档.docx',
2211+
Query: {
2212+
'ci-process': 'doc-preview', /* 必须,数据万象处理能力,文档预览固定为 doc-preview */
2213+
// srcType: '', /* 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值 */
2214+
// page: '', /* 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图 */
2215+
dstType: 'html', /* 非必须,转换输出目标文件类型 */
2216+
},
2217+
}, function(err, data) {
2218+
if (err) {
2219+
console.log(err);
2220+
} else {
2221+
// 使用浏览器打开url即可预览
2222+
var url = data.Url;
2223+
console.log(url);
2224+
}
2225+
});
2226+
}
2227+
2228+
// 识别图片标签
2229+
function getImageLabel() {
2230+
var key = '1/素材.jpeg';
2231+
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
2232+
var url = 'https://' + host;
2233+
cos.request({
2234+
Method: 'GET',
2235+
Key: key,
2236+
Url: url,
2237+
Query: {
2238+
'ci-process': 'detect-label'
2239+
},
2240+
},
2241+
function(err, data){
2242+
logger.log(err || data);
2243+
});
2244+
}
2245+
2246+
// 二维码识别(上传时识别)
2247+
function identifyQrcode_put() {
2248+
util.selectLocalFile(function (files) {
2249+
var file = files && files[0];
2250+
if (!file) return;
2251+
cos.putObject({
2252+
Bucket: config.Bucket, // Bucket 格式:test-1250000000
2253+
Region: config.Region,
2254+
Key: '1/上传二维码.png',
2255+
Body: file,
2256+
Headers: {
2257+
// 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
2258+
'Pic-Operations':
2259+
'{"is_pic_info": 1, "rules": [{"fileid":"test.jpg","rule":" QRcode/cover/0"}]}',
2260+
},
2261+
onProgress: function (progressData) {
2262+
logger.log('onProgress', JSON.stringify(progressData));
2263+
},
2264+
}, function (err, data) {
2265+
logger.log('CIExample1:', err || data);
2266+
});
2267+
});
2268+
}
2269+
2270+
// 二维码识别(下载时识别)
2271+
function identifyQrcode_get() {
2272+
var key = '1/二维码图片.png';
2273+
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
2274+
var url = 'https://' + host;
2275+
cos.request({
2276+
Method: 'GET',
2277+
Key: key,
2278+
Url: url,
2279+
Query: {
2280+
'ci-process': 'QRcode'
2281+
},
2282+
},
2283+
function(err, data){
2284+
logger.log(err || data);
2285+
});
2286+
}
2287+
2288+
// 二维码生成
2289+
function generateQrcode() {
2290+
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com';
2291+
var url = 'https://' + host;
2292+
cos.request({
2293+
Method: 'GET',
2294+
Key: '',
2295+
Url: url,
2296+
Query: {
2297+
'ci-process': 'qrcode-generate', /* 必须,对象存储处理能力,二维码生成参数为 qrcode-generate */
2298+
'qrcode-content': '二维码文案', /* 必须,可识别的二维码文本信息 */
2299+
// mode: 0, /* 非必须,生成的二维码类型,可选值:0或1。0为二维码,1为条形码,默认值为0 */
2300+
width: 200, /* 必须,指定生成的二维码或条形码的宽度,高度会进行等比压缩 */
2301+
},
2302+
},
2303+
function(err, data){
2304+
if (!err) {
2305+
// 获得二维码base64
2306+
var imgBase64 = data.Response.ResultImage;
2307+
// 比如可拼接前缀直接展示在img里
2308+
// document.querySelector('#img').src = 'data:image/jpg;base64,' + imgBase64;
2309+
}
2310+
});
2311+
}
2312+
2313+
// 图片文字识别
2314+
function orc() {
2315+
var key = '1/素材.jpeg';
2316+
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
2317+
var url = 'https://' + host;
2318+
cos.request({
2319+
Method: 'GET',
2320+
Key: key,
2321+
Url: url,
2322+
Query: {
2323+
'ci-process': 'OCR', /* 必须,数据万象处理能力,图片文字识别固定为 OCR。 */
2324+
// type: '', /* 非必须,OCR 的识别类型 */
2325+
// 'language-type': '', /* 非必须,type 值为 general 时有效,表示识别语言类型 */
2326+
// ispdf: false, /* 非必须,type 值为 general、fast 时有效,表示是否开启 PDF 识别 */
2327+
// 'pdf-pagenumber': '', /* 非必须,type 值为 general、fast 时有效,表示需要识别的 PDF 页面的对应页码 */
2328+
// isword: false, /* 非必须,type 值为 general、accurate 时有效,表示识别后是否需要返回单字信息 */
2329+
// 'enable-word-polygon': false, /* 非必须,type 值为 handwriting 时有效,表示是否开启单字的四点定位坐标输出 */
2330+
},
2331+
},
2332+
function(err, data){
2333+
logger.log(err || data);
2334+
});
2335+
}
20462336

20472337
(function () {
20482338
var list = [
@@ -2150,6 +2440,19 @@ function getWebpageAuditingResult() {
21502440
'getDocumentAuditingResult',
21512441
'postWebpageAuditing',
21522442
'getWebpageAuditingResult',
2443+
'describeDocProcessBuckets',
2444+
'getDocPreviewUrl',
2445+
'describeDocProcessQueues',
2446+
'updateDocProcessQueue',
2447+
'createDocProcessJobs',
2448+
'describeDocProcessJob',
2449+
'describeDocProcessJobs',
2450+
'getDocHtmlUrl',
2451+
'getImageLabel',
2452+
'identifyQrcode_put',
2453+
'identifyQrcode_get',
2454+
'generateQrcode',
2455+
'orc',
21532456
];
21542457
var labelMap = {
21552458
putObject: '简单上传',
@@ -2186,6 +2489,19 @@ function getWebpageAuditingResult() {
21862489
getDocumentAuditingResult: '查询文档审核任务结果',
21872490
postWebpageAuditing: '提交网页审核任务',
21882491
getWebpageAuditingResult: '查询网页审核任务结果',
2492+
describeDocProcessBuckets: '查询文档预览开通状态',
2493+
getDocPreviewUrl: '文档转码同步请求',
2494+
describeDocProcessQueues: '查询文档转码队列',
2495+
updateDocProcessQueue: '更新文档转码队列',
2496+
createDocProcessJobs: '提交文档预览任务 ',
2497+
describeDocProcessJob: '查询指定的文档预览任务',
2498+
describeDocProcessJobs: '拉取符合条件的文档预览任务',
2499+
getDocHtmlUrl: '文档转 HTML',
2500+
getImageLabel: '识别图片标签',
2501+
identifyQrcode_put: '二维码识别(上传时识别)',
2502+
identifyQrcode_get: '二维码识别(下载时识别)',
2503+
generateQrcode: '二维码生成',
2504+
orc: '图片文字识别',
21892505
};
21902506
var container = document.querySelector('.main');
21912507
var html = [];

0 commit comments

Comments
 (0)