フリーランスになってから日々あったことを記載していきます。

2017年8月31日木曜日

自炊した本をOCRスキャン中。終わらない。

OCRスキャンが終わりませんでしたorz

やはりadobeでも約8GBのpdfを一気にOCRすることはできないようです。

OCR起動中ですが強制的に終了させ、ファイル数を絞ってOCRしています。

これでないと終わらないみたいです。

2017年8月30日水曜日

自炊した本を分割&OCRスキャン中。

この間、頑張って自炊した本がiPad Proで開けなかったですorz

といっても全部開けないわけではなく、

ページ数が多くサイズがでかいものが開けないみたいです。
(開かなかったpdfは ページ数約350 サイズ122MB)

対策方法は、ページ数を減らしてサイズを減らすことです。

そんなわけでフリーソフトでpdfファイルを分割してページ数を減らそうとするんですが、

ソフトが落ちてしまいました。(うまくいくときもあるんだけどめったにない)

なんとPCでも落ちるようなpdfファイルでしたorz

ある意味pdfの生みの親であるadobeのソフトを体験版で使ってみたところかなり性能がい
い!

巨大pdfファイルを分割しても落ちるようなことはありませんでした。

そんなわけでしょうがないのでAdobe Acrobat DCを買いました。



といってもアマゾンに記載されているものではなくこれです。

Adobe Acrobat Pro DCを年契約で月々払いです。

年払いしても金額変わらないので月々払いにしました。

どうせ分割するなら検索できるpdfにしたいということで、

今やっていることは、OCRスキャン中。

これをすることでページ内にある画像内にある文字を認識して、

pdfファイル内に検索できる文字をつけてくれます。

と簡単に言っていますが、ものすごい時間がかかっています。

1日中やっていますが終わりません。

自炊した本が約8GBあるので明日の夜には終わりそうです。

2017年8月29日火曜日

DHCから注文したサプリメントが届きました

土曜日から月曜日まで食べまくったせいか太りました。

というわけでこれを見越して買ったサプリメントが届きました。

私が買ったのはDHCダイエット対策キット対応型サプリ16です。

結構でかいです。

1日3包ということで袋に包まれているようです。
なるほど。これは飲みやすいですね。

とりあえず明日からやっていきます。

結果は、ダイエットブログにアップします!

2017年8月28日月曜日

今日はお休み。

今日は事情によりお休みです。

明日から普通に更新します。(たぶん)

2017年8月27日日曜日

DHCの遺伝子検査 ダイエット対策キットの結果が返ってきました!

返ってきました。

8月12日に遺伝子を取って、8月13日に郵便に出しました。

一部だけお見せします。





遺伝子結果だけでなく、食事や運動そしてサプリメントまで紹介してくれています。

サプリメントについては、54種類の中から自分に合ったひとつを教えてくれてました。

ちょっと買ってみて試してみようと思います。

2017年8月26日土曜日

Google Cloud Vision APIをまとめてみた。少しだけ。⑥

今回は前回の続きです。

使っている写真はこれ。


実物には顔も入っています。

Google Cloud Vision APIで機能を指定して実行しました。

機能:IMAGE_PROPERTIES・・・画像の一連のプロパティ(画像のドミナントカラーなど)を計算します。
結果
{ "responses": [ { "imagePropertiesAnnotation": { "dominantColors": { "colors": [ { "color": { "red": 204, "green": 197, "blue": 193 }, "score": 0.38275525, "pixelFraction": 0.39605987 }, { "color": { "red": 26, "green": 24, "blue": 30 }, "score": 0.07262851, "pixelFraction": 0.056065526 }, { "color": { "red": 74, "green": 46, "blue": 34 }, "score": 0.018936483, "pixelFraction": 0.010450501 }, { "color": { "red": 146, "green": 47, "blue": 24 }, "score": 0.0046235467, "pixelFraction": 0.0043073012 }, { "color": { "red": 162, "green": 45, "blue": 7 }, "score": 0.004520693, "pixelFraction": 0.0010591724 }, { "color": { "red": 170, "green": 157, "blue": 150 }, "score": 0.10815035, "pixelFraction": 0.08727581 }, { "color": { "red": 25, "green": 27, "blue": 43 }, "score": 0.07013925, "pixelFraction": 0.034529023 }, { "color": { "red": 175, "green": 153, "blue": 139 }, "score": 0.04542019, "pixelFraction": 0.029444994 }, { "color": { "red": 227, "green": 232, "blue": 235 }, "score": 0.03355918, "pixelFraction": 0.034175962 }, { "color": { "red": 132, "green": 120, "blue": 115 }, "score": 0.03263211, "pixelFraction": 0.02782093 } ] } }, "cropHintsAnnotation": { "cropHints": [ { "boundingPoly": { "vertices": [ {}, { "x": 599 }, { "x": 599, "y": 899 }, { "y": 899 } ] }, "confidence": 1, "importanceFraction": 0.52 } ] } } ] }

結果を見ましたが、画像を加工するような人しかいらない気もします。

imagePropertiesAnnotation・・・支配的な色などの画像プロパティを格納します。
cropHintsAnnotation・・・画像を提供するときに新しい作物を生成するために使用されるクロップヒントのセット。

crop=クロップとは画像の一部を抜き取ることみたいです。

それにしても謎なのがimagePropertiesAnnotationです。

支配的な色を知って何をするのかがわかりません。

ネットを探せばこれを使って何かやっている人がいるかもしれませんね。

2017年8月25日金曜日

Google Cloud Vision APIをまとめてみた。少しだけ。⑤

今回は前回の続きです。

使っている写真はこれ。
実物には顔も入っています。

Google Cloud Vision APIで機能を指定して実行しました。

機能:SAFE_SEARCH_DETECTION・・・画像の画像セーフサーチプロパティを判別します。
結果
{ "responses": [ { "safeSearchAnnotation": { "adult": "VERY_UNLIKELY", "spoof": "VERY_UNLIKELY", "medical": "VERY_UNLIKELY", "violence": "VERY_UNLIKELY" } } ] }

まずは値から。VERY_UNLIKERYは可能性がほぼないという意味と考えられます。

そんでもって、チェックしている可能性は下記となります。
adult:画像がアダルトコンテンツか
spoof:なりすましか。面白いか不快に見えるような画像。
medical:医療用の画像
violence:暴力の画像

Google翻訳でやっているので何となくで申し訳ありませんがこんな感じでした。

おっさんが立っているだけなのでそりゃそうですよね。

何にも引っかかりませんでした。

2017年8月24日木曜日

Google Cloud Vision APIをまとめてみた。少しだけ。④

この間やっていたVision APIでほかにも選択できものがあるのでやっていこうかと思います。

使っている写真はこれです。
実物には顔も入っています。

機能:TEXT_DETECTION・・・画像内のテキストに対してOCRを実行します。
結果
{ "responses": [ { "textAnnotations": [ { "locale": "en", "description": "SURF\nBEACH\nTRE RESORT LIfE SHINING\nIN THE RISING SUN\n-IN FLORIDA-\n", "boundingPoly": { "vertices": [ { "x": 194, "y": 170 }, { "x": 318, "y": 170 }, { "x": 318, "y": 323 }, { "x": 194, "y": 323 } ] } }, { "description": "SURF", "boundingPoly": { "vertices": [ { "x": 198, "y": 170 }, { "x": 318, "y": 175 }, { "x": 316, "y": 216 }, { "x": 196, "y": 211 } ] } }, { "description": "BEACH", "boundingPoly": { "vertices": [ { "x": 197, "y": 236 }, { "x": 308, "y": 231 }, { "x": 310, "y": 289 }, { "x": 200, "y": 294 } ] } }, { "description": "TRE", "boundingPoly": { "vertices": [ { "x": 202, "y": 216 }, { "x": 213, "y": 216 }, { "x": 212, "y": 228 }, { "x": 201, "y": 228 } ] } }, { "description": "RESORT", "boundingPoly": { "vertices": [ { "x": 219, "y": 215 }, { "x": 248, "y": 216 }, { "x": 247, "y": 228 }, { "x": 218, "y": 227 } ] } }, { "description": "LIfE", "boundingPoly": { "vertices": [ { "x": 254, "y": 216 }, { "x": 268, "y": 217 }, { "x": 268, "y": 228 }, { "x": 254, "y": 227 } ] } }, { "description": "SHINING", "boundingPoly": { "vertices": [ { "x": 273, "y": 217 }, { "x": 306, "y": 218 }, { "x": 305, "y": 231 }, { "x": 272, "y": 230 } ] } }, { "description": "IN", "boundingPoly": { "vertices": [ { "x": 214, "y": 281 }, { "x": 220, "y": 282 }, { "x": 219, "y": 293 }, { "x": 213, "y": 293 } ] } }, { "description": "THE", "boundingPoly": { "vertices": [ { "x": 226, "y": 279 }, { "x": 237, "y": 280 }, { "x": 236, "y": 292 }, { "x": 225, "y": 291 } ] } }, { "description": "RISING", "boundingPoly": { "vertices": [ { "x": 244, "y": 280 }, { "x": 270, "y": 282 }, { "x": 269, "y": 293 }, { "x": 243, "y": 291 } ] } }, { "description": "SUN", "boundingPoly": { "vertices": [ { "x": 275, "y": 283 }, { "x": 289, "y": 284 }, { "x": 288, "y": 296 }, { "x": 274, "y": 295 } ] } }, { "description": "-IN", "boundingPoly": { "vertices": [ { "x": 195, "y": 295 }, { "x": 218, "y": 296 }, { "x": 217, "y": 320 }, { "x": 194, "y": 319 } ] } }, { "description": "FLORIDA-", "boundingPoly": { "vertices": [ { "x": 229, "y": 296 }, { "x": 304, "y": 299 }, { "x": 303, "y": 323 }, { "x": 228, "y": 320 } ] } } ], "fullTextAnnotation": { "pages": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "width": 600, "height": 900, "blocks": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 196, "y": 170 }, { "x": 318, "y": 170 }, { "x": 318, "y": 294 }, { "x": 196, "y": 294 } ] }, "paragraphs": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 196, "y": 170 }, { "x": 318, "y": 170 }, { "x": 318, "y": 294 }, { "x": 196, "y": 294 } ] }, "words": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 198, "y": 170 }, { "x": 318, "y": 175 }, { "x": 316, "y": 216 }, { "x": 196, "y": 211 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 198, "y": 174 }, { "x": 219, "y": 175 }, { "x": 217, "y": 212 }, { "x": 196, "y": 211 } ] }, "text": "S" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 224, "y": 171 }, { "x": 255, "y": 172 }, { "x": 253, "y": 209 }, { "x": 222, "y": 208 } ] }, "text": "U" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 258, "y": 173 }, { "x": 286, "y": 174 }, { "x": 284, "y": 211 }, { "x": 256, "y": 210 } ] }, "text": "R" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "EOL_SURE_SPACE" } }, "boundingBox": { "vertices": [ { "x": 293, "y": 179 }, { "x": 318, "y": 180 }, { "x": 316, "y": 215 }, { "x": 291, "y": 214 } ] }, "text": "F" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 197, "y": 236 }, { "x": 308, "y": 231 }, { "x": 310, "y": 289 }, { "x": 200, "y": 294 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 197, "y": 236 }, { "x": 216, "y": 235 }, { "x": 218, "y": 279 }, { "x": 199, "y": 280 } ] }, "text": "B" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 218, "y": 235 }, { "x": 238, "y": 234 }, { "x": 240, "y": 278 }, { "x": 220, "y": 279 } ] }, "text": "E" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 240, "y": 235 }, { "x": 263, "y": 234 }, { "x": 265, "y": 289 }, { "x": 242, "y": 290 } ] }, "text": "A" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 264, "y": 237 }, { "x": 285, "y": 236 }, { "x": 287, "y": 290 }, { "x": 266, "y": 291 } ] }, "text": "C" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "EOL_SURE_SPACE" } }, "boundingBox": { "vertices": [ { "x": 287, "y": 236 }, { "x": 308, "y": 235 }, { "x": 310, "y": 289 }, { "x": 289, "y": 290 } ] }, "text": "H" } ] } ] } ], "blockType": "TEXT" }, { "property": { "detectedLanguages": [ { "languageCode": "sv" } ] }, "boundingBox": { "vertices": [ { "x": 201, "y": 215 }, { "x": 306, "y": 215 }, { "x": 306, "y": 231 }, { "x": 201, "y": 231 } ] }, "paragraphs": [ { "property": { "detectedLanguages": [ { "languageCode": "sv" } ] }, "boundingBox": { "vertices": [ { "x": 201, "y": 215 }, { "x": 306, "y": 215 }, { "x": 306, "y": 231 }, { "x": 201, "y": 231 } ] }, "words": [ { "property": { "detectedLanguages": [ { "languageCode": "eo" } ] }, "boundingBox": { "vertices": [ { "x": 202, "y": 216 }, { "x": 213, "y": 216 }, { "x": 212, "y": 228 }, { "x": 201, "y": 228 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 202, "y": 217 }, { "x": 203, "y": 217 }, { "x": 203, "y": 228 }, { "x": 202, "y": 228 } ] }, "text": "T" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 205, "y": 216 }, { "x": 208, "y": 216 }, { "x": 208, "y": 227 }, { "x": 205, "y": 227 } ] }, "text": "R" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "SPACE" } }, "boundingBox": { "vertices": [ { "x": 210, "y": 216 }, { "x": 213, "y": 216 }, { "x": 213, "y": 227 }, { "x": 210, "y": 227 } ] }, "text": "E" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 219, "y": 215 }, { "x": 248, "y": 216 }, { "x": 247, "y": 228 }, { "x": 218, "y": 227 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 219, "y": 215 }, { "x": 221, "y": 215 }, { "x": 220, "y": 227 }, { "x": 218, "y": 227 } ] }, "text": "R" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 223, "y": 215 }, { "x": 226, "y": 215 }, { "x": 225, "y": 227 }, { "x": 222, "y": 227 } ] }, "text": "E" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 229, "y": 215 }, { "x": 232, "y": 215 }, { "x": 232, "y": 226 }, { "x": 229, "y": 226 } ] }, "text": "S" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 234, "y": 215 }, { "x": 237, "y": 215 }, { "x": 237, "y": 226 }, { "x": 234, "y": 226 } ] }, "text": "O" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 239, "y": 216 }, { "x": 243, "y": 216 }, { "x": 243, "y": 227 }, { "x": 239, "y": 227 } ] }, "text": "R" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "SPACE" } }, "boundingBox": { "vertices": [ { "x": 245, "y": 216 }, { "x": 248, "y": 216 }, { "x": 248, "y": 226 }, { "x": 245, "y": 226 } ] }, "text": "T" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 254, "y": 216 }, { "x": 268, "y": 217 }, { "x": 268, "y": 228 }, { "x": 254, "y": 227 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 254, "y": 217 }, { "x": 255, "y": 217 }, { "x": 255, "y": 226 }, { "x": 254, "y": 226 } ] }, "text": "L" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 257, "y": 217 }, { "x": 259, "y": 217 }, { "x": 259, "y": 226 }, { "x": 257, "y": 226 } ] }, "text": "I" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 261, "y": 217 }, { "x": 263, "y": 217 }, { "x": 263, "y": 228 }, { "x": 261, "y": 228 } ] }, "text": "f" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "SPACE" } }, "boundingBox": { "vertices": [ { "x": 265, "y": 217 }, { "x": 268, "y": 217 }, { "x": 268, "y": 228 }, { "x": 265, "y": 228 } ] }, "text": "E" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 273, "y": 217 }, { "x": 306, "y": 218 }, { "x": 305, "y": 231 }, { "x": 272, "y": 230 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 273, "y": 218 }, { "x": 277, "y": 218 }, { "x": 277, "y": 228 }, { "x": 273, "y": 228 } ] }, "text": "S" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 279, "y": 218 }, { "x": 282, "y": 218 }, { "x": 282, "y": 228 }, { "x": 279, "y": 228 } ] }, "text": "H" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 284, "y": 218 }, { "x": 287, "y": 218 }, { "x": 287, "y": 229 }, { "x": 284, "y": 229 } ] }, "text": "I" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 289, "y": 218 }, { "x": 291, "y": 218 }, { "x": 291, "y": 229 }, { "x": 289, "y": 229 } ] }, "text": "N" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 293, "y": 219 }, { "x": 296, "y": 219 }, { "x": 295, "y": 231 }, { "x": 292, "y": 231 } ] }, "text": "I" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 298, "y": 219 }, { "x": 301, "y": 219 }, { "x": 300, "y": 231 }, { "x": 297, "y": 231 } ] }, "text": "N" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "EOL_SURE_SPACE" } }, "boundingBox": { "vertices": [ { "x": 303, "y": 219 }, { "x": 306, "y": 219 }, { "x": 305, "y": 231 }, { "x": 302, "y": 231 } ] }, "text": "G" } ] } ] } ], "blockType": "TEXT" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 194, "y": 279 }, { "x": 304, "y": 279 }, { "x": 304, "y": 323 }, { "x": 194, "y": 323 } ] }, "paragraphs": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 194, "y": 279 }, { "x": 304, "y": 279 }, { "x": 304, "y": 323 }, { "x": 194, "y": 323 } ] }, "words": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 214, "y": 281 }, { "x": 220, "y": 282 }, { "x": 219, "y": 293 }, { "x": 213, "y": 293 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 214, "y": 281 }, { "x": 216, "y": 281 }, { "x": 215, "y": 293 }, { "x": 213, "y": 293 } ] }, "text": "I" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "SPACE" } }, "boundingBox": { "vertices": [ { "x": 218, "y": 281 }, { "x": 220, "y": 281 }, { "x": 219, "y": 293 }, { "x": 217, "y": 293 } ] }, "text": "N" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 226, "y": 279 }, { "x": 237, "y": 280 }, { "x": 236, "y": 292 }, { "x": 225, "y": 291 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 226, "y": 280 }, { "x": 228, "y": 280 }, { "x": 227, "y": 291 }, { "x": 225, "y": 291 } ] }, "text": "T" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 230, "y": 279 }, { "x": 233, "y": 279 }, { "x": 232, "y": 291 }, { "x": 229, "y": 291 } ] }, "text": "H" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "SPACE" } }, "boundingBox": { "vertices": [ { "x": 235, "y": 280 }, { "x": 237, "y": 280 }, { "x": 236, "y": 292 }, { "x": 234, "y": 292 } ] }, "text": "E" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 244, "y": 280 }, { "x": 270, "y": 282 }, { "x": 269, "y": 293 }, { "x": 243, "y": 291 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 244, "y": 280 }, { "x": 247, "y": 280 }, { "x": 246, "y": 291 }, { "x": 243, "y": 291 } ] }, "text": "R" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 249, "y": 280 }, { "x": 250, "y": 280 }, { "x": 249, "y": 291 }, { "x": 248, "y": 291 } ] }, "text": "I" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 252, "y": 280 }, { "x": 255, "y": 280 }, { "x": 254, "y": 291 }, { "x": 251, "y": 291 } ] }, "text": "S" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 257, "y": 281 }, { "x": 260, "y": 281 }, { "x": 259, "y": 292 }, { "x": 256, "y": 292 } ] }, "text": "I" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 262, "y": 281 }, { "x": 264, "y": 281 }, { "x": 263, "y": 292 }, { "x": 261, "y": 292 } ] }, "text": "N" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "SPACE" } }, "boundingBox": { "vertices": [ { "x": 267, "y": 282 }, { "x": 270, "y": 282 }, { "x": 269, "y": 293 }, { "x": 266, "y": 293 } ] }, "text": "G" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 275, "y": 283 }, { "x": 289, "y": 284 }, { "x": 288, "y": 296 }, { "x": 274, "y": 295 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 275, "y": 283 }, { "x": 278, "y": 283 }, { "x": 277, "y": 294 }, { "x": 274, "y": 294 } ] }, "text": "S" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 280, "y": 284 }, { "x": 283, "y": 284 }, { "x": 282, "y": 295 }, { "x": 279, "y": 295 } ] }, "text": "U" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "EOL_SURE_SPACE" } }, "boundingBox": { "vertices": [ { "x": 285, "y": 285 }, { "x": 289, "y": 285 }, { "x": 288, "y": 296 }, { "x": 284, "y": 296 } ] }, "text": "N" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 195, "y": 295 }, { "x": 218, "y": 296 }, { "x": 217, "y": 320 }, { "x": 194, "y": 319 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 195, "y": 295 }, { "x": 196, "y": 295 }, { "x": 195, "y": 319 }, { "x": 194, "y": 319 } ] }, "text": "-" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 198, "y": 295 }, { "x": 205, "y": 295 }, { "x": 204, "y": 319 }, { "x": 197, "y": 319 } ] }, "text": "I" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "SPACE" } }, "boundingBox": { "vertices": [ { "x": 207, "y": 296 }, { "x": 218, "y": 296 }, { "x": 217, "y": 320 }, { "x": 206, "y": 320 } ] }, "text": "N" } ] }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 229, "y": 296 }, { "x": 304, "y": 299 }, { "x": 303, "y": 323 }, { "x": 228, "y": 320 } ] }, "symbols": [ { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 229, "y": 296 }, { "x": 231, "y": 296 }, { "x": 230, "y": 320 }, { "x": 228, "y": 320 } ] }, "text": "F" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 233, "y": 297 }, { "x": 244, "y": 297 }, { "x": 243, "y": 321 }, { "x": 232, "y": 321 } ] }, "text": "L" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 246, "y": 297 }, { "x": 252, "y": 297 }, { "x": 251, "y": 321 }, { "x": 245, "y": 321 } ] }, "text": "O" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 254, "y": 298 }, { "x": 266, "y": 299 }, { "x": 265, "y": 323 }, { "x": 253, "y": 322 } ] }, "text": "R" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 268, "y": 298 }, { "x": 274, "y": 298 }, { "x": 273, "y": 322 }, { "x": 267, "y": 322 } ] }, "text": "I" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 276, "y": 299 }, { "x": 283, "y": 299 }, { "x": 282, "y": 323 }, { "x": 275, "y": 323 } ] }, "text": "D" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ] }, "boundingBox": { "vertices": [ { "x": 285, "y": 299 }, { "x": 291, "y": 299 }, { "x": 290, "y": 323 }, { "x": 284, "y": 323 } ] }, "text": "A" }, { "property": { "detectedLanguages": [ { "languageCode": "en" } ], "detectedBreak": { "type": "EOL_SURE_SPACE" } }, "boundingBox": { "vertices": [ { "x": 293, "y": 299 }, { "x": 304, "y": 299 }, { "x": 303, "y": 323 }, { "x": 292, "y": 323 } ] }, "text": "-" } ] } ] } ], "blockType": "TEXT" } ] } ], "text": "SURF\nBEACH\nTRE RESORT LIfE SHINING\nIN THE RISING SUN\n-IN FLORIDA-\n" } } ] }

長いですね。内容を確認すると、間違いもありますがTシャツに書かれている文字をちゃんと抜き取っています。

抜き取っている文字は、大きく分けてtextAnnotationsとfullTextAnnotationの二つに分かれています。

textAnnotations・・・単語単位にデータがあるみたいです。(今回の場合)

fullTextAnnotation・・・一文字単位にデータがあります。

特に気になったのが、文字の大きさで順番が変わることです。

上から順に見ていって同じぐらいの文字サイズを塊にして文字を出力するみたいです。

やってみると意外なことがわかります。