私たちのモータープールは、運転免許証をスキャンして、データをカスタムシステムにインポートしたいと考えています。プログラムでスキャナーからデータ(画像を含む)を取得し、それをアプリケーションに挿入できるものを探しています。このタイプのシステムの経験があり、推奨したり、避けるべきシステムを教えてくれる人はいないかと思いました。このアプリケーションはPowerBuilderで記述されており、DB2データベースを使用しています。
7 に答える
idScan.net (www.idScan.net) によるソリューションを試す 米国およびカナダのすべての州の運転免許証の解析を可能にする SDK があります。また、2次元バーコードと磁気ストライプの両方を読み取るIDスキャナーE-seek m250などのハードウェアも購入できます(ソフトウェアが含まれています)。幸運を!
私たちは、レコード管理ソフトウェアで同様のものをサポートしています。私たちのアプリケーションは、ウェッジリーダーで動作するように設計されています。これは、ウェッジリーダーが最も簡単に起動して実行できるためです(特別なドライバーは必要ありません)。カードをスワイプすると、リーダーは磁気ストライプにエンコードされた各文字のキーストロークをOSに送信し、Enter
各トラック間でキーを押します(AAMVA準拠のライセンスには3つのデータトラックがあります)。
誰かが手でデータを入力しているかのように動作するため、少し面倒です。したがって、すべてのデータがいつあるかを簡単に判断する方法はありません(3行の情報を取得するのを待つだけですが、検出するのは困難です。誰かが学生IDカードをスワイプしようとした場合など、無効なカード。3トラック未満がエンコードされている可能性があります。この場合、アプリケーションは、存在しない3番目のトラックが受信されるのを待って永久にハングします。これに対処するために、「フェイルファスト」アプローチを使用します。Enter
キーを押すと、すぐに現在の行を処理し、その時点(1、2、または3)で予想されるトラックの記録を保持します。現在のトラックを処理できない場合(たとえば、AAMVA形式の運転免許証に記載されているものとは異なる開始文字がトラックに表示される場合)、ユーザーは運転免許証以外のものをスワイプした必要があると見なされます。
私たちが使用しているリーダーが画像データの読み取りをサポートしているかどうかはわかりません。カード上のデータのサブセットを返すようにプログラムできますが、工場出荷時のデフォルト設定を使用します。これは、最初の3つのデータトラックのみを返すように見えます(実際、画像データは、一部のデータにある2Dバーコードでエンコードされていると思います。ライセンス、磁気ストライプではありませんが、私は間違っている可能性があります)。
運転免許証のマグストライプで使用されるAAMVAトラック形式の詳細については、現在の規格の付録Fを参照してください。
私たちが使用する基本的なアプローチは次のとおりです。
フォーカスが与えられている非表示のテキストボックスを持つモーダルダイアログを表示します。ダイアログボックスは、リーダーを介してカードをスワイプするようにユーザーに指示するだけです。
ユーザーがカードをスワイプすると、リーダーは非表示のテキストボックスにキーダウンイベントの送信を開始します。
テキストボックスのキーダウンイベントハンドラーは、
Enter
キーの押下を監視します。1つが検出されると、テキストボックスに現在保存されている最後の行を取得し、AAMVA形式に従ってトラックを解析しようとするトラックパーサーに渡します。この「フェイルファスト」解析ステップが現在のトラックで失敗した場合、ダイアログのステータスメッセージを、カードを読み取れなかったことをユーザーに通知するメッセージに変更します。この時点で、テキストボックスは引き続き追加のキーダウンイベントを受信しますが、後続のトラックも失敗する可能性が高いため、リーダーがデータの送信を停止するたびにユーザーにエラーメッセージが表示される可能性があります。
解析が成功すると、次に処理するトラックをパーサーに通知するカウンターをインクリメントします。
現在のトラック数が3を超える場合、3つのトラックを処理したことがわかります。この時点で、3つのトラック(ほとんどのフィールドはすでに分割されていますが、この時点ではすべてが文字列として保存されています)をより使いやすい
DriversLicense
オブジェクトに解析します。このオブジェクトは、トラックデータをさらにチェックし、アプリケーション(DOB
フィールドを文字列から実際のDateオブジェクトに変換し、AAMVAName
フィールドのサブフィールドを名、ミドルネーム、姓、名前のサフィックスなどに解析します)。この2番目の解析フェーズが失敗した場合は、カードを再度スワイプするようにユーザーに指示します。成功した場合は、ダイアログを閉じて、DriversLicense
オブジェクトをメインアプリケーションに渡し、さらに処理します。
スキャナーが「twain 準拠」の場合、このようなネットで購入できる ActiveX コントロールを介して、アプリからスキャナーを管理できます。基本的なスキャン パラメータ (品質、色、単一/複数ページ、出力形式など) を管理し、アプリからスキャンを開始し、結果をファイルとして保存し、このファイルを必要な場所に転送できます。過去 2 年間、VB コードで使用しています。できます。
私はC#でパーサーを作成しましたが、それは「大丈夫」ですが、まだ完璧にはほど遠いです。
私はそれを見つけることができないようですが、検索するパターンを持ったウィキペディアのエントリが存在していました(私を信じてください、これを自分で解析することは助けなしでは苦痛です)。
州によって、政府発行のIDを使用できるものと使用できないものについて異なる法律があることに注意してください。テキサスには1つあります。
デルのカードリーダーを使用しており、キーボードから入力した場合とまったく同じように入力し、Enterキーを押します。これにより、プログラミングが/ very /簡単になりました。これは、テキストボックスにフォーカスを送信して、入力を待つだけだからです。それをチャンクに分割する主なキーはニンジン'^'です。それを破ると、基本的なチャンクができあがります。
カードから運転免許証情報を取得するために、磁気ストライプリーダーを使用したいかもしれません。私が覚えているように、運転免許証のほとんどはそれらのストライプにプレーンテキストのデータを持っているだけなので、プログラミングに関しては比較的簡単です。
MagStripe リーダーも最近は安価です。
InfoScan SDK も使用できます。www.scan-monitor.com で見つけることができます。このシステムでは、任意のスキャナーを使用でき、特定のスキャナーを購入する必要はありません。
このリストから何かを試すことができます: http://www.adams1.com/plugins.html
ただし、私自身は使用していません。