-
Notifications
You must be signed in to change notification settings - Fork 9
/
read_script.js
126 lines (99 loc) · 3.85 KB
/
read_script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
$(function () {
var outputMsgDiv = $("#OutputMsgDiv");
var outputResultDiv = $("#OutputResultDiv");
var resultUrlDiv = $("#ResultUrlDiv");
// Computer Vision API の Subscription Key と URL をセット
// サブスクリプション画面に表示される URL および Key をコピーしてください
var subscriptionKey = "YOUR_SUBSCRIPTION_KEY";
var endpoint = "https://YOUR_LOCATION.api.cognitive.microsoft.com/";
// Computer Vision API 呼び出し URL をセット
var webSvcUrl = endpoint + "vision/v3.2/read/analyze";
var uploadedImage;
// 画像を画面に表示
var showImage = function () {
if (uploadedImage) {
var blobUrl = window.URL.createObjectURL(uploadedImage);
$("#ImageToAnalyze").attr("src", blobUrl);
}
outputMsgDiv.text("[Analyze] をクリックしてデータを送信してください");
};
//画像の分析
var postImage = function () {
// 画面に表示するメッセージをセット
if(document.getElementById('imageFile').value == "")
{
// 初期設定
outputMsgDiv.text("画像を選択してください");
}
else{
// 画像分析中
outputMsgDiv.text("送信中...");
}
// Computer Vision API を呼び出すためのパラメーターをセットして呼び出し
fetch( webSvcUrl, {
method: 'POST',
mode: 'cors',
headers: {
'Ocp-Apim-Subscription-Key': subscriptionKey,
'Content-Type': 'application/octet-stream'
},
body: uploadedImage
}).then((res)=>{
outputMsgDiv.text("On process: posting data...");
if (!res.ok) {
outputMsgDiv.text("ERROR!: failed to send text data.");
}
return(res.headers.get('operation-location'));
}).then((resultUrl)=>{
// 結果取得URL を取得
resultUrlDiv.text(resultUrl);
outputMsgDiv.text("データを送信しました。結果を取得するには [Result] をクリックしてください");
});
};
// 結果の取得
var getResult = function () {
outputMsgDiv.text("On process: checking analysis task status...");
var resultUrl = document.getElementById('ResultUrlDiv').textContent;
fetch( resultUrl, {
method: 'GET',
mode: 'cors',
headers: {
'Ocp-Apim-Subscription-Key': subscriptionKey
}
}).then((res)=>{
if (!res.ok) {
outputMsgDiv.text("ERROR!: failed to access to result.");
}
return(res.json() );
}).then((json)=>{
// 分析結果が取得できた場合
if (json.status == "succeeded")
{
var outputResultText = "";
json.analyzeResult.readResults[0].lines.forEach(line => {
outputResultText += line.text + "<br>";
});;
outputMsgDiv.text("結果表示");
outputResultDiv.html(outputResultText);
}
else
{
outputMsgDiv.text("分析中です。しばらくしてから再度 [Result] をクリックしてください");
}
});
};
// 画像が変更された場合
$("#imageFile").on('change', function(e){
uploadedImage = e.target.files[0];
showImage();
outputResultDiv.html(null);
});
// データの送信
$("#PostImage").on('click', function(e){
postImage();
});
// 結果取得&表示
$("#GetResult").on('click', function(e){
getResult();
});
});