LPR API を使ってみる ~③パラメータの指定~

①curlでの画像送信②複数枚の画像送信に引き続き、今回はcurlコマンドを用いてLPR APIのパラメーターを指定する方法について紹介します。

事前準備と動作環境
前回、前々回と同じ環境で行います。

テストファイルの用意

今回は新たにtest2のフォルダを用意し、Full HD(1920×1080)サイズのJPEG画像に、幅が95px、200px、400px、800pxのナンバープレートを配置したものをそれぞれ用意しました。

パラメーターを指定していない場合、LPR APIにより認識されるナンバープレートの大きさは、横幅96px∼600px程度まで(※推奨範囲は150px∼400px)です。

左上:95px,左下:200px,右上:400px,右下:800px

LPR APIでパラメーターを指定せずにそれぞれの画像を以下のコマンドで送ると

curl –X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> –F "image1=@w-95.jpg" 

curl –X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> –F "image1=@w-200.jpg"

curl –X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> –F "image1=@w-400.jpg"

curl –X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> –F "image1=@w-800.jpg"

このような結果で返ってきました。

\test2>curl -X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> -F "image1=@w-95.jpg"
{"RES":0}

\test2>curl -X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> -F "image1=@w-200.jpg"
{"PLATES":[{"AREA":"練馬","CLASS":"331","COLOR":"白","DIGITS":"0270","KANA":"と","KIND":"自家","SCORE"{"AREA":"76.2","CLASS":"83.7","DIGITS":24,"KANA":"81.7"},"TYPE":"中板"}],"RES":1}

\test2>curl -X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> -F "image1=@w-400.jpg"
{"PLATES":[{"AREA":"練馬","CLASS":"331","COLOR":"白","DIGITS":"0270","KANA":"と","KIND":"自家","SCORE":{"AREA":"67.8","CLASS":"83.6","DIGITS":8,"KANA":"81.1"},"TYPE":"中板"}],"RES":1}

\test2>curl -X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> -F "image1=@w-800.jpg"
{"RES":0}

横幅が95pxと800pxのものは認識できていないのがわかります。

ここでパラメーターを指定して、認識対象のナンバープレートのサイズの上限と下限を変更することで、認識できるようになるかを確認してみます。

画像と同じフォルダ内に新しくparam-90.jsonと、param-800.jsonの二つのjsonファイルを作成しました。

中身はそれぞれ以下の通りです。

param-90.jsonには、以下の内容を記載します。

{"psizelimit":90}

“psizelimit”は、認識されたナンバープレートのうち、横幅が指定したサイズ未満のナンバープレートを除外するためのパラメータで、デフォルトでは96px未満の横幅のナンバープレートは除外されます。
“psizelimit”は、対象のナンバープレートとは別に、奥側に対象外のナンバープレートが映り込んでしまう場合などで読み取りたい対象以外のナンバープレートを無視するために用います。”psizelimit”で100未満の小さい値を指定しても、そのサイズのナンバープレートが認識できるようになるわけではなく、小さいナンバープレートはそもそも認識しにくく正解率も低いため、注意が必要です。

param-800.jsonには、以下の内容を記載します。

{"psizemax":800}

“psizemax”は、認識対象のナンバープレートが撮影される想定の最大幅を指定します。指定したサイズのナンバープレートが認識できるように繰り返し認識が行われますので、わずかではありますが処理時間が増加します。

コマンド実行

上記のパラメーターと画像をcurlコマンドで送信します。コマンドは以下の通りです。
パラメータファイルは、ファイルのContent-Typeとしてapplication/json、もしくはtext/jsonを指定する必要があります。curlでは、”type=application/json”とすることで指定できます。

curl –X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> –F "image1=@w-95.jpg" -F "meta=@param-90.json;type=application/json"

curl –X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> –F "image1=@w-800.jpg" -F "meta=@param-800.json;type=application/json"

パラメータを指定することでナンバープレートを認識できました。

\test2>curl -X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> -F "image1=@w-95.jpg" -F "meta=@param-90.json;type=application/json"
{"PLATES":[{"AREA":"練馬","CLASS":"331","COLOR":"白","DIGITS":"0270","KANA":"と","KIND":"自家","SCORE":{"AREA":"66.5","CLASS":"78.5","DIGITS":8,"KANA":"73.2"},"TYPE":"中板"}],"RES":1}

\test2>curl -X PUT https://api.sensing-api.com/api/lpr-entry?token=<-トークン-> -F "image1=@w-800.jpg" -F "meta=@param-800.json;type=application/json"
{"PLATES":[{"AREA":"練馬","CLASS":"331","COLOR":"白","DIGITS":"0270","KANA":"と","KIND":"自家","SCORE":{"AREA":"67.0","CLASS":"80.1","DIGITS":8,"KANA":"81.5"},"TYPE":"中板"}],"RES":1}

その他のパラメータ

設定可能なパラメーターの一覧と仕様については、管理画面のLPR APIの詳細ページにある外部仕様書にて確認できます。
※認識対象のナンバープレートのサイズを指定するpsizeは、通常の LPR API のプランでは指定対象外です。

まとめ

パラメーターを指定することで認識結果が変わることが確認できました。
パラメーターを指定するためには、Content-Typeとしてapplication/json、もしくはtext/jsonを指定する必要があることに注意してください。