問題タブ [ocr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1484 参照

php - Zinnia (手書き認識) と PHP の統合

zinnia (手認識システム) を通常の phpに統合する方法について、誰か指示や手順を教えてください。それがどのように機能するかのサンプルはここにあります。

ありがとうございました。

0 投票する
11 に答える
16742 参照

java - ニューラル ネットワークを使用した手書き認識はどこから始めればよいですか?

しばらくの間、ニューラル ネットワークについて学ぼうとしてきましたが、オンラインでいくつかの基本的なチュートリアルを理解することができました。今、私はニューラル ネットワークを使用してオンラインの手書き認識を開発したいと考えています。だから私はどこから始めればいいのか分かりませんか?そして、私は非常に良い指示が必要です。最後に、私は Java プログラマーです。

あなたは私が何をすることをお勧めしますか?

0 投票する
6 に答える
14778 参照

iphone - Iphone 用 ABBYY モバイル OCR エンジン

次の iPhone アプリ用に OCR ソリューションを使用/購入しようと考えています。

このサイトで回答を検索しても、あまり役に立ちませんでした。

ABBYY Mobile OCR Engine for iPhone を使ったことのある人はいますか?

私が興味を持っているのは、それがどれほど優れているか (認識)、そしてどのくらいの費用がかかるかということです。

ありがとうございました。

0 投票する
5 に答える
4568 参照

key - OCR の RSA キーフォブ (セキュリティ トークン)

毎朝当社の銀行の Web サイトにログインし、必要な預金情報をスクレイピング/エクスポートする、簡単な WinForm/組み込み IE ブラウザー コントロールを作成しました (銀行は小規模な地方銀行です)。同じマスター アカウントから引き出される数十の「疑似アカウント」があるため、これを取得するのに実際には 10 ~ 15 分かかります。

とにかく、唯一の問題は、私たちのビジネス銀行口座が RSA セキュリティ トークン ( http://www.rsa.com/node.aspx?id=1156 ) を必要とすることです。 15 (?) 秒ごとにランダムな 6 桁の数字が表示されるため、開始する前にこの値の入力を求める必要があります。これは、Web サイトのログイン ベースのセキュリティ モデルの上にあるため、何もできない読み取り専用アカウントを作成した場合でも、RSA 番号を入力する必要があります。会社。

私たちの観点からすると、これは厄介なセキュリティです。私は、ウェブカメラを使用してキーフォブからの数字をOCRすることについて冗談を言っていました。ええと、彼らは私が本当にできるかどうか尋ねました。

カメラで生成された JPEG 画像からこれらの数字を確実に OCR するのにどれくらいの労力 (何時間) かかると思いますか? JPEGを簡単に取得できることはすでに知っています。ログイン試行回数は 3 回だと思うので、99% の正解率を達成する必要があります。オフの時間にこれに取り組むこともできますが、彼らは私に数時間以上費やすことを望んでいないので、できるだけ多くの既存のコードを活用したいと考えています。これは (目覚まし時計のような) 7 セグメント ディスプレイであるため、OCR パッケージが見慣れている正確なテキストではありません。

また、ディスプレイの側面にカウントダウン タイマーがあります。通常、バーが 1 つになったら、次の数字が表示されるまで待ってから、バーが 5 つになるまで待ちます (携帯電話の信号強度のように)。したがって、これも OCR する必要がありますが、テキストではありません。

とにかく、これを入力しながら考えれば考えるほど、これを本当に正しく理解できるかどうか確信が持てなくなるので、空き時間に作業する必要がありますか?

0 投票する
4 に答える
22410 参照

python - Python での自分の OCR プログラム

私はまだ初心者ですが、文字認識プログラムを書きたいと思っています。このプログラムはまだ準備ができていません。また、かなり編集したため、コメントが正確に一致しない場合があります。連結成分のラベル付けには 8 連結性を使用します。

0 投票する
2 に答える
433 参照

fonts - 目にやさしく、優れた OCR を生成するプロポーショナル フォント

魅力的で読みやすく、OCR で処理しやすいプロポーショナルフォントの推奨事項を教えてください。私は OCR の結果を許容範囲から最高レベルまで押し上げたいと思っています。

私が除外したフォントには、OCR-A (等幅で恐ろしい)、OCR-B (かなり良いが等幅)、および MICR ベースのフォントが含まれます。私は Google の怪物ではありませんが、最後の 1 時間はアドバイスを求めて過ごしました。;-) アイデアがありましたら、ぜひお聞かせください。

Θịзηη</p>

0 投票する
2 に答える
8054 参照

image-processing - デーバナーガリー語のOCR(ヒンディー語/マラーティー語/サンスクリット語)

現代の機械学習技術を使用したインドのスクリプトの光学式文字認識で行われている最近の作業について誰かが知っていますか?ISI、カルカッタで行われているいくつかの研究を知っていますが、私の知る限り、過去3〜4年間で新しいものは何も出てきておらず、デーバナーガリーのOCRは悲しいことに欠けています!

0 投票する
3 に答える
1516 参照

.net - コインをスキャンし、画像から日付を特定する

特定の種類のコイン (米国のニッケルなど) の画像を取得し、その画像からその年を検索する .NET プログラムを作成したいと考えています。スキャンは常に 300 dpi で、一貫した画像サイズがコインにトリミングされていると仮定します。変化するのはコインの回転です。

では、どのように日付を決定すればよいでしょうか。 毎年予想されるすべてのコイン画像のライブラリを作成して、画像を一致させる必要がありますか? 日付の OCR を試す必要がありますか? どのライブラリが役立つか

ヘルプや提案をお寄せいただきありがとうございます

0 投票する
2 に答える
39261 参照

php - PHP を使用して Web サイトに OCR を実装するにはどうすればよいですか?

Linux サーバー上の PHP または Python で動作する無料の OCR ライブラリはありますか? アイデアは、画像をアップロードしてそこから文字を引き出すか、ユーザーが「文字を描画」してその画像からそれらを解析できるようにすることです。

0 投票する
7 に答える
3636 参照

algorithm - 最適化されたOCR黒/白ピクセルアルゴリズム

有限の文字セット用の単純なOCRソリューションを書いています。つまり、アルファベットの26文字すべてがどのように見えるかを正確に知っています。私はC#を使用しており、特定のピクセルを黒または白として扱う必要があるかどうかを簡単に判断できます。

すべての文字に対して黒/白のピクセルのマトリックスを生成しています。したがって、たとえば、文字I(大文字のi)は次のようになります。

注:この投稿の後半で使用するすべてのポイントは、左上のピクセルが(0、0)、右下のピクセルが(4、4)であると想定しています。1は黒のピクセルを表し、0は白のピクセルを表します。

次のように、C#で対応するマトリックスを作成します。

代わりに多次元配列を使用することでこの部分を最適化できる可能性があることはわかっていますが、今のところ、これは説明のためであることを無視しましょう。すべての文字はまったく同じ寸法で、10px x 11pxです(10px x 11pxは、実際のプログラムでの文字の実際の寸法です。この投稿では、0を使用して文字を「描画」する方がはるかに簡単なので、これを5pxx5pxに簡略化しました。小さい画像では1)。

これで、OCRで分析する画像の10px x 11pxの部分を指定すると、すべてのピクセル(10 * 11 = 110)のすべての文字(26)で実行する必要があります。これは、2,860(26 * 110)を意味します。すべての単一文字の反復(最悪の場合)。

すべてのキャラクターのユニークな特徴を定義することで、これを最適化できると思いました。したがって、たとえば、文字のセットが5つの異なる文字(I、A、O、B、およびL)のみで構成されていると仮定します。これらは次のようになります。

すべてのキャラクターの固有の特性を分析した後、キャラクターをテストするために実行する必要のあるテストの数を大幅に減らすことができます。たとえば、「I」文字の場合、座標(3、0)に黒のピクセルがあるという独自の特性を定義できます。これは、他の文字がそのピクセルを黒として持っていないためです。そのため、「I」文字の一致について110ピクセルをテストする代わりに、1ピクセルのテストに減らしました。

これらすべてのキャラクターの場合、次のようになります。

これは、5文字を手動で行うのは困難であり、追加される文字の量が多いほど難しくなります。また、文字を可能な限り最適化する必要があるため、文字の固有の特性の最小セットがあることを保証する必要があります。

すべての文字の固有の特性を識別し、上記と同様のコードを生成するアルゴリズムを作成したいと思います。次に、この最適化された黒/白のマトリックスを使用して文字を識別します。

黒/白のピクセルがすべて入力されている26文字(CreateLetterコードブロックなど)を取得して、文字を定義する最適化された一意の特性セット(新しいOcrLetter()コードブロックなど)に変換するにはどうすればよいですか?そして、それが一意の特性の最も効率的な定義セットであることをどのように保証しますか(たとえば、6ポイントを一意の特性として定義する代わりに、1または2ポイントでそれを行う方法があるかもしれません。例はできました)。


私が思いついた別の解決策は、ハッシュテーブルを使用することです。これにより、ハッシュテーブルが2,860回の反復から110回の反復に削減され、26時間短縮されます。これがどのように機能するかです:

次のようなデータを入力します。

これで、処理する画像内の場所に到達したら、それを「01110 00100 00100 00100 01110」などの文字列に変換し、ハッシュテーブルで検索します。この解決策は非常に単純に見えますが、文字ごとにこの文字列を生成するには、110回の反復が必要です。

大きなO表記では、ページ上で処理するN文字に対してO(110N)= O(2860N)= O(N)であるため、アルゴリズムは同じです。ただし、それでも26の一定の係数で改善されており、大幅に改善されています(たとえば、26分かかる代わりに、1分かかります)。


更新:これまでに提供されたソリューションのほとんどは、キャラクターの固有の特性を識別する問題に対処しておらず、代わりのソリューションを提供しています。私が知る限り、最速のOCR処理を実現する唯一の方法であるこのソリューションをまだ探しています。

私はちょうど部分的な解決策を思いついた:

ピクセルごとに、グリッドに、それを含む文字を黒いピクセルとして格納します。

これらの文字の使用:

あなたはこのようなものを持っているでしょう:

ここで、すべての文字について、固有の特性を見つけるために、それが属するバケットと、バケット内の他の文字の量を確認する必要があります。それでは、「私」を例にとってみましょう。それが属するすべてのバケット(1,0; 2,0; 3,0; ...; 3,4)に移動し、他の文字の数が最も少ないバケットが(3,0)であることを確認します。実は1文字しかないので、この場合は「I」に違いないので、独自の特徴があります。

白になるピクセルに対しても同じことができます。バケット(2,0)には、「L」を除くすべての文字が含まれていることに注意してください。これは、ホワイトピクセルテストとして使用できることを意味します。同様に、(2,4)には「A」が含まれていません。

これらのピクセルは一意の特性(例:1,1; 4,0; 0,1; 4,4)を定義するのに役立たないため、すべての文字を含むバケット、または文字を含まないバケットはすぐに破棄できます。

たとえば、「O」と「B」の場合のように、文字に対して1ピクセルのテストがない場合は、さらに注意が必要です。'O'のテストを見ていきましょう...

次のバケットに含まれています。

さらに、役立ついくつかの白いピクセルテストもあります:(私は多くても2つ欠けているものだけをリストしました)。ミッシングカウントは(5-Bucket.Count)として計算されました。

これで、最短の黒ピクセルバケット(3,2)を取得し、(3,2)をテストすると、それが「A」または「O」のいずれかであることがわかります。したがって、「A」と「O」の違いを簡単に見分ける方法が必要です。「O」を含むが「A」を含まない黒いピクセルバケット(例:2,4)、または「O」を含むが「A」を含まない白いピクセルバケット(例:1,1)のいずれかを探すことができます。これらのいずれかを(3,2)ピクセルと組み合わせて使用​​すると、2回のテストで文字「O」を一意に識別できます。

これは、5文字の場合は単純なアルゴリズムのように見えますが、26文字で、さらに多くのピクセルが重なっている場合はどうすればよいでしょうか。たとえば、(3,2)ピクセルのテスト後に、ピクセルを含む10個の異なる文字が見つかったとします(これはすべてのバケットの中で最も少なかった)。ここで、他の1文字だけでなく、他の9文字との違いを見つける必要があります。できるだけ少ない量のチェックを取得するという目標をどのように達成し、無関係なテストを実行していないことを確認するにはどうすればよいですか?