是否可以在 Tampermonkey 上通过 JavaScript 获取百度 OCR 访问令牌?

时间:2021-05-28 03:51:48

标签: javascript ajax request ocr access-token

toDataURL() 是一个将图片转为base64的函数,结果是'dataUrl',然后是urlencode。

我使用GM_xmlhttpRequest获取访问令牌,控制台显示JSON未定义,是否可以跨域获取访问令牌以及如何显示完整的结果OCR文本?

toDataURL(
                'https://i.imgur.com/GniA3wQ.png',
                function(dataUrl) {
                    const base64Data = dataUrl.split(';base64,')[1];
                    var API_Key="xxxxxxxxxxxxxxxxxxxxxxxx";
                    var Secret_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
                    var getTokenUrl="https://aip.baidubce.com/oauth/2.0/token";
                    var token_Res = GM_xmlhttpRequest({
                        method: "POST",
                        url: getTokenUrl,
                        grant_type: "client_credentials",
                        client_id: API_Key,
                        client_secret: Secret_Key,
                        onload: function(response){
                            console.log("success");
                            console.log(response.responseText);
                        },
                        onerror: function(response){
                            console.log("error");
                        }
                    });
                    var access_token = token_Res.body.json().access_token;//can not get

                    var ocrUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic";
                    var ocr_Res = GM_xmlhttpRequest({
                        method: "POST",
                        headers: {
                            "Content-Type": "application/x-www-form-urlencoded"
                        },
                        access_token: access_token,
                        image: "image64=" + encodeURIComponent (base64Data),
                        language_type:"CHN_ENG",
                        //data: dataUrl,
                        onload: function(response){
                            console.log("success");
                            console.log(response.responseText);
                        },
                        onerror: function(response){
                            console.log("error");
                        }
                    });
                    var json = ocr_Res.body.json();
                    console.log(json);
                }

转移到 base64

function toDataURL(src, callback, outputFormat) {
        var img = new Image();
        //img.crossOrigin = 'Anonymous';
        img.crossOrigin = "";
        img.onload = function() {
            var canvas = document.createElement('CANVAS');
            var ctx = canvas.getContext('2d');
            var dataURL;
            canvas.height = this.naturalHeight;
            canvas.width = this.naturalWidth;
            ctx.drawImage(this, 0, 0);
            dataURL = canvas.toDataURL(outputFormat);
            callback(dataURL);
        };
        img.src = src;
        if (img.complete || img.complete === undefined) {
            img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
            img.src = src;
        }

    }

0 个答案:

没有答案