
本日、当社の製品の1つであるABBYY FineReader Engineが、ブラジルの最大の民間銀行が宗派の結果に対処した方法を説明します。 これがどのようになるか想像できませんか? 猫へようこそ。
80年代後半の宗派が発生したとき、ゼロは銀行券だけでなく「市民の銀行口座の金額も調整された」だけでなく「消え」ました-もちろん、銀行に有利に。 当時、銀行に補償を要求したのはわずかな金額だった。 2007年(つまり、18年後)に、ある起業家ブラジルの市民は、10年半の利子を考慮して、「不足」額はそれほど少なくないと考え、利子の支払いを求めて銀行に適用し、銀行は拒否し、市民は訴訟を起こしました。裁判所に。 裁判所は要件を合法であると認識し、銀行に補償を命じました。
この時点で、多くのそのようなアピールがあることが明らかになりました。 裁判所に申し込むには、宗派の時点で口座の状態に関する情報が必要であり(このような文書は銀行取引明細書と呼ばれます)、銀行は口座所有者にこの情報を提供する必要がありました。

宗派が行われた期間中に、銀行口座の状態に関するすべての情報が印刷、写真撮影され、マイクロフィッシュに転送されました。
映画はアーカイブに保存されていたため、数千人がこのデータを求めて来た場合、銀行の他のすべての仕事が出てくることは明らかでした。従業員がアーカイブに行き、必要な映画を検索し、顧客に情報を発行するだけの十分な作業時間があります。 銀行は、マイクロフィッシュからの情報を電子形式に変換する必要があると判断しました-そして、ここで私たちは役に立ちました。
できるだけ早く特別なスキャナーですべてのマイクロフィッシュをスキャンし(Wicks and WilsonおよびKodakスキャナーを使用)、データ(顧客名、アカウント番号、および金額)を抽出し、これらすべてをデータベース(Microsoft SQL Server)に入れる必要がありました。 スキャンは、ABBYY FormReaderで作成されたテンプレートを使用するABBYY FineReader Engineのいずれかの製品で処理する必要がありました。
このプロジェクトの作業スキームは、多かれ少なかれ標準的なものでした。スキャン-認識とデータ抽出-データベースへのデータストレージ-検証:

認識の前に、画像が処理されました。歪みが除去され、「ノイズ」が発生しました。
マイクロフィッシュはアーカイブにほぼ20年間保存されていたため、スキャンの品質もそれぞれ平均的でしたが、複雑さはそれだけではありませんでした。 実際には、銀行取引明細書はドットマトリックスプリンターまたはタイプライターのいずれかで印刷され、そのような文書を認識するために特別な技術が使用されており、それについて詳しく説明するのは理にかなっています。 読者を許してください-例として、私たちはブラジルの写真ではなく、テストベースの画像を提供します。
製品にはいくつかの種類のテキスト認識があります。 もちろん、標準モードではすべてを認識できますが、非標準フォントで印刷されたテキストでは、品質が低下する可能性があります。 この場合、特別なモードのいずれかを選択できます。この場合、マトリックスプリンターとタイプライター用に別々のモードがあります。
少なくとも、異なるタイプのテキストは異なる標準で互いに異なります。つまり、各タイプのテキストには独自の文字スタイルがあります。 ドットマトリックスプリンターの文字スタイルは通常のものとは非常に異なるため、特別な個別の標準があります。 さまざまなプリンターからフォントライブラリを構築しようとしました。 「マトリックス」標準のデータベースでの認識を向上させるために、Courier Newモノスペースフォントの文字など、通常の標準をいくつか追加します。


さらに、異なるタイプのデータは、コード内で異なる方法で処理されます。 マトリックスプリンターとタイプライターはどちらも等幅フォントを使用します。このようなフォントでは、他の多くのフォントとは異なり、各親しみやすさの幅は一定であり、隣接する行の文字は上下に配置されます。

覚えているように、認識段階の1つは行の選択です。 等幅フォントで印刷されたテキストの行を選択するとき、まず、テキストにグリッドを重ねて、各文字がその場所に表示されるようにします。
さらに、行は、通常のフォントで行を強調表示するときに使用されるパラメーターとは異なるパラメーターで強調表示されます。たとえば、通常のマトリックスプリンターでは、発音区別記号(大文字と小文字の両方)が付いた文字は完全に親しみやすくなります。


分音記号を個別に処理して共通の線に固執する必要はないことがわかります。
別のタスクは、どのスペースが単語間の間隔と見なされるか、およびどの文字間の距離であるかを正しく判断することです。 等幅フォントでは、i文字とl文字の間に多くのスペースがあり、私たちのアルゴリズムはそれらをスペースに使用できます。


基本的に、ギャップの強調表示は次のとおりです。ヒストグラムを見て、すべての白いギャップをカウントします。 通常、大きなギャップは単語間の距離であり、小さなギャップは文字間の距離であり、説明された例では距離は平均であり、プログラムは単語を2つに分割することでミスを犯す可能性があります。 しかし、「ドットマトリックスプリンター」というテキストタイプをマークすると、グリッドがテキストにスーパーインポーズされ、この中規模のギャップが隣接するセル間のギャップに収まることがわかります。したがって、これは単語間のスペースではないことがわかります(スペースは空のセル全体です) 。 ドットマトリックスプリンターがうまく印刷されず、文字が重なってグリッドが作成できない場合があります。 または、タイプライターのリボンが引き伸ばされ、線がシフトして印刷される場合。


そのような場合、グリッドをオーバーレイするのは難しく、通常の認識アルゴリズムを使用します。
次の難題は、キャラクターの印刷方法です。
ドットマトリックスプリンターは異なります。 これは優れたマトリックスプリンターであり、通常モードでそのようなテキストを認識しようとすることさえできます。

しかし、このテキストは古いプリンターで印刷されます-文字では、個々のポイントとそれらの間の距離を見ることができます。


「Dot Matrix Printer」テキストタイプを指定した場合、プログラムは2つのモードのいずれかを選択できます。 1つは、私たちが持っている標準を使用しようとするときです。 2つ目-いわゆる「ドラフトモード」-シンボル内でポイント間の距離が埋められます。 これは、ポイント間の距離が大きいキャラクターを操作する場合に非常に役立ちます。埋めない場合、アルゴリズムは1文字ではなく2文字であると判断できます。 2つの別々の部分の通信を確認し、探し始めます。


いくつかのパラメータに従って、プログラムは「ドラフトモード」の適用を試みるかどうかを決定します。 はじめに、いくつかの断片、線について、最良の仮説は「ドラフト」であると確信しています。そうであれば、他のすべての記号を埋め始めます。 最良の仮説が「ドラフト」ではない場合、原則としてこのモードを実行できますが、個々のキャラクターの1つが非常によく認識されていない場合のみです。
文字入力の質が低いことに加えて、別の困難があります-ドットマトリックスプリンターを使用していたとき、多くの場合、紙を節約し、凝縮モード(狭いフォント、文字間の小さな距離)で印刷しました。

タイプライターでは、いくつかの例外を除いて、困難は同じです。 タイプライティングされたテキストは、非常に大きな文字の欠陥によって特徴付けられます。 テープは文字にくっつき、ペンキ、ゴミなどが付着します。


行と文字の間にも多くの「ゴミ」があり、これは認識を複雑にします。

このようなテキストを扱う際のもう1つの微妙な点は、上付き文字と下付き文字です。 タイプライターでは、インデックスを印刷するには、キャリッジを半行上下にスライドさせます。 フォントサイズは同じままですが、通常の認識では、インデックスのフォントを小さくする必要があると考えられています。これは「タイプライター」モードで提供されます。

タイプライターで印刷されたテキストでさえ、行間に不均等な距離があるかもしれません。

まあ、実際には、すべての違い。
結論として-従来のプロジェクト統計。 わずか3か月で約240万件の文書が処理され、銀行は市民の流入にうまく対処しました。
ABBYYブラジルビジネス開発マネージャー、ジョアンロッタと共同執筆したテキスト