tegaki.ai API v2 / PHPによるOCRを検証する（色んな意味で）最低なプログラム

**悪戦苦闘したOCR検証**
すごい人には簡単な接続でしょうが、素人の私が実現するのには気が狂いそうでした。
私レベル向けに、汚いコードだったり、サーバー側に迷惑かけるような手抜きですが
ご参考になれば…

※ 尊敬する[コージェントラボ](https://www.tegaki.ai/)さん、[こういうツール](https://cloudvisionapidemo.appspot.com/)作ってください

**参照ってかほぼコピー**
１．[「Tegaki」をPHPで実装](http://njs-net.hatenablog.com/entry/2017/12/22/172509)
これをまんま雛形にしてますが、v1であることと
リンク先はフォーム単位の読み取り(POST /form)に対し、
今回はフィールド単位の読み取り処理(POST /field)です。
よって、テンプレートイメージデータの準備は不要。
認識はフォーム単位では無いためか、二列とか多分🙅ですね

２．[ignore_errorsについて](http://www.tinybeans.net/blog/2013/12/12-125027.html)
３．[jsonあたり一部参考](https://qiita.com/keki/items/e5b82c6b4c28d3f00b72)

```PHP
<?php
// APIキー
$apiKey = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX";

// 画像ファイル名
$imageNm = $argv[1] ;

//Tegaki.aiのAPI / POST /field
$url = 'https://api.tegaki.ai/hwr/v2/field';
$key = $apiKey;

//画像データをbase64エンコード
$data64 = base64_encode(file_get_contents($imageNm));

// リクエスト用json作成
$json = json_encode(array(
    "version" => "v2",
    "fields" => array(
      array(
//        "name" => "amount",
        "singleLine" => array(
          "imageData" => json_encode(mb_convert_encoding($data64, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN')),
          "characterType" => array(
            "hiragana"=> false,
            "katakana"=> false,
            "kanji"=> false,
            "digits"=> true,            ///数字や特殊文字に限定
            "upperCaseLatin"=> false,
            "lowerCaseLatin"=> false,
            "punctuation"=> false,
          ),
          "configuration" => array(
            "languageModel"=>false,     //数字や特殊文字に限定した場合、言語モデルは選択不可
          ),
          //"masks" => 10, トリミング
        ),
      ),
    ),
));

//ヘッダー情報を設定
$headers = array(
  'Authorization: apikey '.$key,          // APIキーを使った認証
  'Content-Type: application/json',       // json形式のデータをpostするので必要
  'Accept: application/json',             // 利用可能なアプリケーションタイプ
);

//コンテキストのオプションを生成
$options = array(
  'http' => array(
    'method'  => 'POST',                        // POSTで送信
    'header'=>  implode(PHP_EOL, $headers),     // ヘッダー情報を連結
    'content' => $json,                         // テンプレートデータ・画像データ
    'ignore_errors' => true,
  )
);

$context  = stream_context_create( $options );          // コンテキストの生成
$result = file_get_contents( $url, false, $context );   // コンテキストを指定してTegaki.aiのURLへ送信

//成功した時
if ($result != false)
{
  //連想配列にする
  $result = json_decode($result,true);
  //fields項目を追加（画像の位置等がふくまれる）
  $json = json_decode($json, true);
//$result['fields'] = $json;
  //JSON形式に戻す
  $result = json_encode($result);
  //文字コードをUTF8にエンコード
  $result = mb_convert_encoding($result, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
}

//ここで一旦POSTに対するレスポンスを取得
//var_dump(json_decode($result,true));

//--------------------------------------------

//get
// リクエストID
$requestID=json_decode($result,true)["requestId"];

///Tegaki.aiのAPI / GET /request アドレスの最後にリクエストＩＤを加えます。
$url = 'https://api.tegaki.ai/hwr/v2/request/' . $requestID;

//ヘッダー情報を設定
$headers = array(
  'Authorization: apikey '.$key,                // APIキーを使った認証
  'Content-Type: application/x-www-form-urlencoded'     // URLエンコード（既定値）
);


$options = array(
  'http' => array(
    'method'  => 'GET',                    // GET送信
    'header'=>  implode(PHP_EOL, $headers),          // ヘッダー情報を連結
  )
);

$context  = stream_context_create( $options );        // コンテキストの生成

//サーバーに負荷がかかるのでwait入れてください
do{
        $result = file_get_contents( $url, false, $context );    // コンテキストを指定してTegaki.aiのURLへ送信
        $arr_result=json_decode( $result,true);
        echo $arr_result["state"];
}while($arr_result["state"]=="RUNNING");

var_dump(json_decode( $result,true));
```