// import fs = require("fs"); // import path = require("path"); // import request = require("request"); // import { FileUtil } from "./tool/FileUtil"; // var acc_token = ''; // /**图片文字识别处理器 采用百度API*/ // class OrcProcessor { // checkImageTxt(imgurl: string): Promise { // let s = this; // return new Promise((resolve, reject) => { // let isExit = fs.existsSync(imgurl); // if (!isExit) resolve('file not exist'); // else { // if (!acc_token) { // s.getAcctoken().then(result => { // if (result) { // s.checkOcr(imgurl).then(result => { // resolve(result); // }); // } else { // resolve('get token fail'); // } // }); // } else { // s.checkOcr(imgurl).then(result => { // resolve(result); // }); // } // } // }) // } // /**获取API token */ // private getAcctoken(): Promise { // let s = this; // return new Promise((resolve, reject) => { // let tokenUrl = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=3On70zcPsWuZNaAQmvBcKY7l&client_secret=j31DkAp7ccRHNLqqfIuo8OSFXQpQyZ8H"; // request({ // url: tokenUrl, // method: "POST", // json: true, // headers: { "content-type": "application/json" } // }, function (error, response, body) { // if (!error && response.statusCode == 200) { // if (body.access_token) { // acc_token = body.access_token; // resolve(true); // } else { // resolve(false); // } // } // }) // }); // } // private checkOcr(imgurl: string): Promise { // let s = this; // let buff = fs.readFileSync(imgurl, 'base64'); // let img64 = encodeURIComponent(buff); // //API经测试准确率达不到100% 99吧 有可能遗漏 有可能多选 经粗略测试 高精版>标准版>网络图片版 // let ocrUrl = s._ocrUrls[s._urlIndex]; // // console.log(ocrUrl); // return new Promise((resolve, reject) => { // request({ // url: ocrUrl + "?access_token=" + acc_token, // method: "POST", // headers: { "content-type": "application/x-www-form-urlencoded" }, // body: `image=${img64}` // }, function (error, response, body) { // if (!error && response.statusCode == 200) { // resolve(body); // } // }) // }); // } // /**切换检测API */ // switchOcr() { // let s = this; // let index = s._urlIndex + 1; // if (s._ocrUrls[index]) { // s._urlIndex = index; // return true; // } // return false; // } // /**检测地址 */ // private _ocrUrls: string[] = [ // "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic",//高精版 // "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"//标准版 // // "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage"//网络图片版 // ]; // /**默认采用高精版API 500次/天 精准版 50000/天*/ // private _urlIndex: number = 0; // } // class OrcTxt { // ocr = new OrcProcessor(); // constructor() { // } // start(dirUrl: string) { // let s = this; // if (!fs.existsSync(dirUrl)) { // console.log(dirUrl + "不存在!"); // return; // } // if (fs.existsSync(s.targetDir)) FileUtil.rmdirSync(s.targetDir) // s._failNum = 0; // s._urlIndex = 0; // s._chineseImgsNum = 0; // s._curImgUrl = undefined; // s._waitImageUrls = []; // // dirUrl = 'E:\\work\\繁体策划资源\\cmd\\bin\\新增项'; // FileUtil.walkDir(dirUrl, s.onFile, null, s); // s._total = s._waitImageUrls.length; // s.checkOcrImages(); // } // private checkOcrImages() { // let s = this; // if (s._urlIndex < s._waitImageUrls.length) { // s._curImgUrl = s._waitImageUrls[s._urlIndex] // s.checkOrc(); // } else { // console.log('检测结束 共识别' + s._total + "个文件", '含中文:' + s._chineseImgsNum + "个"); // } // } // private checkOrc() { // let s = this; // let imgUrl = s._curImgUrl; // console.log('检测:' + imgUrl); // s.ocr.checkImageTxt(imgUrl).then(result => { // let vo: any; // try { // vo = JSON.parse(result); // } catch (e) { // console.log(result); // } // if (vo && vo.error_code) {//api失败 // console.error('baidu api error ' + vo.error_code, vo); // if (vo.error_code == 18) {//请求超上限了 // s.ocr.switchOcr(); // s.checkOcrImages(); // } else { // s._failNum++; // if (s._failNum >= 30) { // console.error('失败,baidu api 接口今天已达上限!'); // return; // } // s._urlIndex++; // s.checkOcrImages(); // } // } else { // if (vo && vo.words_result) { // let words: { words: string }[] = vo.words_result; // let hasChinese = words.length > 0; // if (hasChinese) { // console.log('识别到文字:' + JSON.stringify(words)); // let imgBuff = fs.readFileSync(imgUrl); // let copyPath = path.join(s.targetDir, imgUrl.substr(imgUrl.indexOf(':') + 1)); // let copyDir = path.dirname(copyPath); // FileUtil.mkdirSync(copyDir); // fs.writeFileSync(copyPath, imgBuff); // s._chineseImgsNum++; // s._urlIndex++; // s.checkOcrImages(); // } else { // s._urlIndex++; // s.checkOcrImages(); // } // } else { // s._urlIndex++; // s.checkOcrImages(); // } // } // }) // } // private get targetDir() { // return path.join(process.cwd(), '筛选出的图片'); // } // private onFile(url: string) { // let s = this; // if (url.indexOf('png') > -1 || url.indexOf('.jpg') > -1 || url.indexOf('jpeg') > -1) { // s._waitImageUrls[s._waitImageUrls.length] = url; // } // } // private _urlIndex: number; // private _waitImageUrls: string[]; // private _chineseImgsNum: number; // private _total: number; // private _curImgUrl: string; // private _failNum: number = 0; // } // export function run(dirUrl): void { // new OrcTxt().start(dirUrl); // }