2017-07-03 8 views
1

ブラジルでは、病院のすべての新生児に標準的なフォームが手書きで入力されています。この形式は「DNV」と呼ばれます(ポルトガル語の「生きた宣言」の後)。ポルトガル語の "Decease Declaration"の後に "DO"という形式もあります。私の状態では、病院は、これらのフォームの数百万に近いものを私が働く代理店に送ります。そこでは、「重要な統計」というデータベースを計算します。私は仕事を自動化することが可能かどうか調査中です。商用のICRソリューションは多額の費用がかかりますので、誰も内部で行うことはできないと考えているので、草の根のプロジェクトです。この画像で特定のフォームフィールドを見つける方法

フォームの上部には、このようなものです: enter image description here

私が使用していくつかの病院から送られた100K PDFファイルに私の手を持って、2種類のいずれかにそれらを分類することができた(DNVまたはDO)単純なアルゴリズム:最初に、ドキュメントの種類(cv2.findContoursと少しのヒューリスティックを使用)を含む黒い矩形を探し、OCR(pytesseract.image_to_string)を適用します。私は20kの "死の宣言"(DO)と80k "生きた生き残り宣言"を見つけました。

類似のアルゴリズムを使用して、黒い四角形の右側の数字をOCRすることができ、これらのドキュメントに基づいて専門のタイピストによって記入されたデータベース内の対応するレコードと画像をリンクすることができました。

今、私は数字を認識するための機械学習のビットを試みるために(赤で)日付フィールドを見つけたい - フィールドは、以下の強調表示されています: enter image description here

まず私は、「テンプレートマッチング」を試してみましたこれをテンプレートとして使用するアルゴリズム:enter image description here

テンプレートとフォームイメージのスケールと角度が同じ場合にのみ、これはうまくいきます。 cv2.matchTemplateメソッドは実際にスケールに敏感です。私はSURFを使って特徴を照合するアルゴリズムを試みましたが、うまく動作するようになっています(過度の感じ)。

それは左の黒い四角形を見つけることは簡単ですので、私は数字を見つけるためにいくつかのオプションを考えています:

  • 黒い長方形に基づいて、スケールと角度を正規化し、cv2.matchTemplateをしよう。

  • 輪郭の位置を確認しようとすると、cv2.approxPolyDPを使用して簡略化し、数字の位置を推測します。

私の質問は:どのように問題を攻撃する方法についてのアドバイスですか?入力が解像度/角度の点で正規化されていない場合は、このフォームフィールドを見つけるために他のどのアルゴリズムを使用できますか?

[更新#1]

は、左の黒い矩形の位置及びサイズなど(X、Y、W、H)を考えると、私は合理的な自信を持って検索を絞り込むことができます。ランダムなサンプルを試すenter image description here

、この式は、私を与える:

img.crop((x+w, y+h/3, x+h*3.05, y+2*h/3)) 

enter image description here enter image description here enter image description here

[更新#2]

私はちょうど今、彼らは、およそerodedilateを学びました私の新しい親友。

horizontal = edges.copy() 
vertical = edges.copy() 

kv = np.ones((25, 1), np.uint8) 
kh = np.ones((1, 30), np.uint8) 

horizontal = cv2.dilate(cv2.erode(horizontal, kh, iterations=2), kh, iterations=2) 
vertical = cv2.dilate(cv2.erode(vertical, kv, iterations=2), kv, iterations=2) 

grid = horizontal | vertical 

plt.imshow(edges, 'gray') 

enter image description here

plt.imshow(grid, 'gray') 

enter image description here

ところで私は、コンピュータビジョンについての手掛かりを持っていません。 Googleに戻ってみましょう...

答えて

0

フィールド角、calc角度/スケールを見つけて、画像を正規化画像に変換するだけでなく、

関連する問題