質問するログイン新規登録

質問編集履歴

4

誤字脱字の修正

2019/08/20 11:51

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  ```
48
48
  ↓コンソール
49
- ```Swift
49
+ ```
50
50
  The type of base64Image is String // 画像がString型になっている
51
51
  ```
52
52
 

3

誤字脱字を修正しました。

2019/08/20 11:51

投稿

退会済みユーザー
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

カメラを起動してから写真を撮影するまでのコードが抜けていたので、追加した。

2019/08/20 11:50

投稿

退会済みユーザー
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

見出しの追加と、説明の補足

2019/08/20 11:49

投稿

退会済みユーザー
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
- func detect(from image: UIImage, completion: @escaping (OCRResult?) -> Void) {
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
  //