質問編集履歴
4
誤字脱字の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
```
|
48
48
|
↓コンソール
|
49
|
-
```
|
49
|
+
```
|
50
50
|
The type of base64Image is String // 画像がString型になっている
|
51
51
|
```
|
52
52
|
|
3
誤字脱字を修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,7 +70,7 @@
|
|
70
70
|
|
71
71
|
Google Cloud Platformコンソール画面に行ってAPIリクエストが届いているか確認しても、APIリクエストの数が増えていないので、リクエスト自体が、届いていないと思われます。
|
72
72
|
|
73
|
-
### 【その他の】
|
73
|
+
### 【その他のコード】
|
74
74
|
### カメラを起動し、写真を撮るコード
|
75
75
|
```Swift
|
76
76
|
//
|
2
カメラを起動してから写真を撮影するまでのコードが抜けていたので、追加した。
title
CHANGED
File without changes
|
body
CHANGED
@@ -50,10 +50,6 @@
|
|
50
50
|
The type of base64Image is String // 画像がString型になっている
|
51
51
|
```
|
52
52
|
|
53
|
-
画像をURLで指定してAPIリクエストした際は、Google Cloud Platformコンソール画面にて、届いたAPIリクエストの数が1つ増えていることが確認できました。
|
54
|
-
|
55
|
-
このことからもAPIリクエストが届いていることがわかります。
|
56
|
-
|
57
53
|
### 【できなかったこと】
|
58
54
|
iOSアプリから起動したiPhoneカメラで撮ったものを、base64でSrting型に変換したものをAlamofireを使ってAPIリクエストした。
|
59
55
|
|
@@ -74,10 +70,43 @@
|
|
74
70
|
|
75
71
|
Google Cloud Platformコンソール画面に行ってAPIリクエストが届いているか確認しても、APIリクエストの数が増えていないので、リクエスト自体が、届いていないと思われます。
|
76
72
|
|
77
|
-
### 【
|
73
|
+
### 【その他の】
|
78
|
-
|
74
|
+
### カメラを起動し、写真を撮るコード
|
79
75
|
```Swift
|
80
76
|
//
|
77
|
+
//
|
78
|
+
// CameraViewController.swift
|
79
|
+
//
|
80
|
+
//
|
81
|
+
|
82
|
+
// MARK: AVCapturePhotoCaptureDelegateデリゲートメソッド
|
83
|
+
extension CameraViewController: AVCapturePhotoCaptureDelegate{
|
84
|
+
// 撮影した画像データが生成されたときに呼び出されるデリゲートメソッド
|
85
|
+
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
|
86
|
+
if let imageData = photo.fileDataRepresentation() {
|
87
|
+
// Data型をUIImageオブジェクトに変換
|
88
|
+
let uiImage = UIImage(data: imageData)
|
89
|
+
// 写真ライブラリに画像を保存
|
90
|
+
UIImageWriteToSavedPhotosAlbum(uiImage!, nil,nil,nil) // 正常にライブラリに保存されることを確認済みです
|
91
|
+
|
92
|
+
// こっから下はGoogle Cloud Vision APIのdetectBoundingBoxes()を呼び出している
|
93
|
+
GoogleCloudOCR().detect(from: uiImage!) { ocrResult in
|
94
|
+
|
95
|
+
// self.activityIndicator.stopAnimating() //読み込み中画面を使う場合はコメントアウトを消す
|
96
|
+
guard let ocrResult = ocrResult else {
|
97
|
+
fatalError("Did not recognize any text in this image")
|
98
|
+
}
|
99
|
+
print(ocrResult)
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
```
|
106
|
+
|
107
|
+
### 【Google CloudにAPIリクエストするコード】
|
108
|
+
```Swift
|
109
|
+
//
|
81
110
|
// GoogleCloudOCR.swift
|
82
111
|
//
|
83
112
|
//
|
1
見出しの追加と、説明の補足
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
【ゴール】
|
1
|
+
### 【ゴール】
|
2
2
|
Alamofireを用いてGoogle Cloud Vision APIに画像をPOSTし、画像から検出されて返される文字列を取得すること。
|
3
3
|
|
4
4
|
ただし、画像はiOSアプリから起動したiPhoneカメラで撮ったものを、base64でSrting型に変換したものを渡すこととする。
|
5
5
|
|
6
|
-
【できたこと①】
|
6
|
+
### 【できたこと①】
|
7
|
-
・以下のように画像URLを渡すと、APIリクエストが成功し、画像に含まれる文字列を認識してちゃんと返してくれました。
|
7
|
+
・以下のように"source"に画像URLを渡すと、APIリクエストが成功し、画像に含まれる文字列を認識してちゃんと返してくれました。
|
8
8
|
```Swift
|
9
9
|
let parameters: Parameters = [
|
10
10
|
"requests": [
|
@@ -20,15 +20,24 @@
|
|
20
20
|
]
|
21
21
|
|
22
22
|
```
|
23
|
-
【できたこと②】
|
23
|
+
### 【できたこと②】
|
24
24
|
・iPhoneカメラで撮った画像をbase64でString型に変換することも、できていました。
|
25
25
|
```Swift
|
26
|
+
// 画像をbae64でエンコードする
|
27
|
+
private func base64EncodeImage(_ image: UIImage) -> String? {
|
28
|
+
return image.pngData()?.base64EncodedString(options: .endLineWithCarriageReturn)
|
29
|
+
}
|
30
|
+
```
|
31
|
+
```Swift
|
32
|
+
// 画像に含まれるテキストを検出する
|
26
|
-
|
33
|
+
func detect(from image: UIImage, completion: @escaping (OCRResult?) -> Void) {
|
27
34
|
|
28
35
|
guard let base64Image = base64EncodeImage(image) else {
|
29
36
|
completion(nil)
|
30
37
|
return
|
31
38
|
}
|
39
|
+
|
40
|
+
// Google Vision APIに、base64でエンコード済みのデータを渡す
|
32
41
|
callGoogleVisionAPI(with: base64Image, completion: completion)
|
33
42
|
|
34
43
|
print ("The type of base64Image is (type(of: base64Image))")
|
@@ -38,14 +47,14 @@
|
|
38
47
|
```
|
39
48
|
↓コンソール
|
40
49
|
```Swift
|
41
|
-
The type of base64Image is String
|
50
|
+
The type of base64Image is String // 画像がString型になっている
|
42
51
|
```
|
43
52
|
|
44
53
|
画像をURLで指定してAPIリクエストした際は、Google Cloud Platformコンソール画面にて、届いたAPIリクエストの数が1つ増えていることが確認できました。
|
45
54
|
|
46
55
|
このことからもAPIリクエストが届いていることがわかります。
|
47
56
|
|
48
|
-
【できなかったこと】
|
57
|
+
### 【できなかったこと】
|
49
58
|
iOSアプリから起動したiPhoneカメラで撮ったものを、base64でSrting型に変換したものをAlamofireを使ってAPIリクエストした。
|
50
59
|
|
51
60
|
実行前・実行中(runtime)エラーのいずれもなく(エラーが何も出てこない)、Build Succeedとなり、正常にアプリが起動する。
|
@@ -65,7 +74,7 @@
|
|
65
74
|
|
66
75
|
Google Cloud Platformコンソール画面に行ってAPIリクエストが届いているか確認しても、APIリクエストの数が増えていないので、リクエスト自体が、届いていないと思われます。
|
67
76
|
|
68
|
-
【コード全文】
|
77
|
+
### 【コード全文】
|
69
78
|
参考までに、コード全文を載せさせていただきます。
|
70
79
|
```Swift
|
71
80
|
//
|