Node.js + Express + LPR API でナンバープレート認識(番外編)

先日、LPR APIは、外交官・自衛隊ナンバーの認識をリリースしました(記事はこちら)が、デフォルトでは外交官・自衛隊ナンバーは認識されません。今回は、外交官・自衛隊ナンバーを認識対象に含める設定方法についてご紹介します。

過去にご紹介したサンプルアプリも、早速外交官・自衛隊ナンバー読み取りに対応済みですので、そちらのコードを利用して解説していきます。

サンプルアプリのソースコードは随時GitHubにて公開しています。

サンプルアプリの解説については前編後編の2回に分けた記事がありますので是非ご覧ください。

外交官・自衛隊ナンバー対応の設定方法

外交官・自衛隊ナンバーを認識するには、LPR APIへのリクエストにJSONパラメータとして “ptype”:99 を追加するだけです。

JSONパラメーターをリクエストに含める方法についてはNode.js + Express + LPR API でナンバープレート認識(解説・後編)5.APIリクエストで確認することができます。

以下は、サンプルアプリでLPR APIへリクエストを送って結果を受信する部分のコードです

app.post('/lpr-api', async(req,res)=>{

  //画像ファイル取得
  const path1 = req.files.file1.path;

  if(path1){
    const form = new FormData();
    const buffer =fs.createReadStream(path1);

    //Formdataに画像データとJSONパラメータを追加する
    form.append('image1',buffer);
    form.append('meta','{"psizemax":800,"psizelimit":0,"ptype":99}',{
     contentType:'application/json',filename:'param.json'
    });

    url = `${API_URL}?token=${API_TOKEN}`;

    const response = await fetch(url,{method:'PUT',body:form});
    const json = await response.json();
    

  }else{
    res.render('/',{message:"error:アップロードできませんでした"})
  }
})

パラメータの細かい仕様については、LPR API 仕様書をご確認ください。

LPR API仕様書につきましてはSensingAPIの会員ページからダウンロードすることができます。

↓↓↓ご登録(無料)はこちらから↓↓↓

外交官・自衛隊ナンバー撮影時の注意点

外交官・自衛隊ナンバーを撮影する際にそれぞれ注意点があります。

外交官ナンバー

外交官ナンバーは3桁から5桁まで存在するため、一連番号が4桁以下の場合にはナンバープレートが画像の右端に接していると、もう1桁右側に隣接する数字が見切れている可能性が出てくるため、認識を保留して認識対象外のプレートとして判定します。右側に余白がある場合には認識可能となります。

撮影の際はナンバープレートの右側に必ず余白を設けるように撮影すると認識が安定します。

外交官ナンバープレート(左:良い例、右:悪い例)

自衛隊ナンバー

一般的な中版のナンバープレートと形状が違うため、撮影時にはやや大きめに撮影すると認識しやすくなります。

また、自衛隊車両は車高の非常に高い車両などもあり、車両の前面であっても取付位置の高さが大きく異なりますので、カメラを固定して撮影する際にも注意が必要になります。

まとめ

今回は外交官・自衛隊ナンバーの認識方法についてご紹介しました。

EyeTech Sensing APIは、簡単に無料で会員登録ができる画像認識APIサービスです。最先端のナンバープレート認識API「LPR API」を、Webからメールアドレスで会員登録するだけで、すぐにご利用いただけます。