DDDDOcr は、作者と kerlomz との共同作業であり、大量のランダム データを生成し、詳細なネットワーク トレーニングを実行します。このライブラリの使用による効果は完全に形而上学に依存します。識別可能な。
DDDDOcr は依存性を最小限に抑えるコンセプトで、ユーザー構成と使用コストを最小限に抑え、すべてのテスターに快適なエクスペリエンスを提供することを目指しています。
プロジェクトアドレス: ここをクリックして送信してください
使いやすいユニバーサル キャプチャ認識 Python ライブラリ
このプロジェクトのドキュメントを調べる »
· バグを報告する · 新機能を提案する
スポンサーシップパートナー
スタートガイド
環境支援
インストール手順
ファイルディレクトリの説明
プロジェクトの基礎的なサポート
ドキュメントを使用する
基本的な OCR 認識能力
ターゲット検出能力
スライダー検出
OCR確率出力
カスタム OCR トレーニング モデルのインポート
バージョン管理
関連するおすすめ記事またはプロジェクト
著者
寄付する
スターの歴史
スポンサーシップパートナー | おすすめの理由 | |
---|---|---|
はいキャプチャ | Google reCaptcha 検証コード/hCaptcha 検証コード/funCaptcha 検証コード商用グレードの識別インターフェイスクリックして直接 VIP4 にアクセス | |
スーパーイーグル | 世界をリードするインテリジェント画像分類および認識ビジネス。安全、正確、効率的、安定性、オープンであり、大規模な同時実行をサポートする強力な技術チームと検証チームを擁しています。 7*24時間のジョブ進捗管理 | |
マレニア | Malenia エンタープライズレベルのプロキシ IP ゲートウェイ プラットフォーム/プロキシ IP 配布ソフトウェア | |
ニンバス VPS | 登録初月は50%オフ | 浙江ノード低価格、大帯域幅、月額1億30元 |
システム | CPU | GPU | サポートされる最大の py バージョン | 述べる |
---|---|---|---|---|
Windows 64ビット | √ | √ | 3.12 | Windows の一部のバージョンでは、VC ランタイム ライブラリをインストールする必要があります |
Windows 32ビット | × | × | - | |
Linux64/ARM64 | √ | √ | 3.12 | |
リナックス32 | × | × | - | |
マコスX64 | √ | √ | 3.12 | M1/M2/M3...チップリファレンス #67 |
i. pypiからインストールする
pip インストール ddddocr
ii. ソースからインストールする
git clone https://github.com/sml2h3/ddddocr.gitcd ddddocr Pythonのセットアップ.py
dddddocr を dddddocr プロジェクトのルート ディレクトリに直接インポートしないでください。開発プロジェクトのディレクトリ名が dddddocr でないことを確認してください。これは基本的な常識です。
例えば:
ddddocr ├── MANIFEST.in ├── LICENSE ├── README.md ├── /ddddocr/ │ │── __init__.py 主代码库文件 │ │── common.onnx 新ocr模型 │ │── common_det.onnx 目标检测模型 │ │── common_old.onnx 老ocr模型 │ │── logo.png │ │── README.md │ │── requirements.txt ├── logo.png └── setup.py
このプロジェクトは dddd_trainer のトレーニング結果に基づいています。基礎となるトレーニング フレームワークは pytorch です。したがって、このプロジェクトの最大の互換性と Python バージョンのサポートは主に onnxruntime に依存します。
これは主に、一般的な英語や数値の確認コードなど、単一行のテキスト、つまり画像の主要部分を占めるテキスト部分を識別するために使用されます。このプロジェクトは、中国語、英語(ランダムな大文字と小文字、または設定による大文字小文字)を認識できます。結果の範囲)、数字、および特殊文字。
# example.pyimport ddddocrocr = ddddocr.DDDDOcr()image = open("example.jpg", "rb").read()result = ocr.classification(image)print(result)
このライブラリには 2 つの OCR モデルが組み込まれており、デフォルトでは自動的に切り替わりません。ddddocr を初期化するときにパラメータを切り替える必要があります。
# example.pyimport ddddocrocr = ddddocr.DdddOcr(beta=True) # ocr モデルの 2 番目のセットに切り替える image = open("example.jpg", "rb").read()result = ocr.classification(image)print ( 結果)
一部の透明な黒の PNG 形式画像の認識サポートに関するヒント: classification
方法ではpng_fix
パラメーターが使用され、デフォルトは False です。
ocr.classification(画像、png_fix=True)
知らせ
以前、OCR が認識されるたびに ddddocr を再初期化することを好む人が多いことがわかりました。つまり、毎回ocr = ddddocr.DdddOcr()
実行するのですが、これは間違いです。初期化と初期化後の最初の認識速度が非常に遅いです。
参考例画像
以下の写真が含まれますが、これらに限定されません
これは主に、画像内でターゲットとなる可能性のある被写体の位置を迅速に検出するために使用されます。検出されたターゲットは必ずしもテキストであるとは限らないため、この関数はターゲットの bbox 位置のみを提供します(ターゲット検出では、通常 bbox (バウンディング ボックスの略語) を使用します。 bbox はターゲット位置を記述します。 bbox は長方形のボックスで、長方形の左上隅の x 軸と y 軸の座標、および右下隅の x 軸と y 軸の座標によって決定されます。
使用中に ocr 関数を呼び出す必要がない場合は、初期化中にパラメーターocr=False
渡すことで ocr 関数をオフにすることができ、ターゲット検出を有効にするには、パラメーターdet=True
import ddddocrimport cv2det = ddddocr.DdddOcr(det=True)with open("test.jpg", 'rb') as f:image = f.read()bboxes = det.detection(image)print(bboxes)im = cv2 .imread("test.jpg")bbox の bbox:x1、y1、x2、y2 = bboxim = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), height=2)cv2.imwrite("result.jpg", im)
参考例画像
以下の写真が含まれますが、これらに限定されません
このプロジェクトのスライダー検出機能は AI 認識によって実装されず、opencv の組み込みアルゴリズムによって実装されます。スクリーンショットを撮るユーザーにとってはあまり親切ではないかもしれませんが、使用中に ocr 関数やターゲット検出関数を呼び出す必要がない場合は、初期化中に ocr=False パラメータを渡すことで ocr 関数をオフにするか、 det=False
ocr=False
設定できます。ターゲット検出機能をオフにします。
この関数には 2 つの組み込みアルゴリズム実装があり、2 つの異なる状況に適しています。詳細については、次の手順を参照してください。
a. アルゴリズム 1
アルゴリズム 1 の原理は、スライダー画像のエッジを通じて背景画像内の対応するピット位置を計算することです。スライダー画像と背景画像はそれぞれ透明な背景画像です。
スライダーチャート
背景画像
det = dddddocr.DdddOcr(det=False, ocr=False) with open('target.png', 'rb') as f:target_bytes = f.read() with open('background.png', 'rb') as f:background_bytes = f.read() res = det.slide_match(target_bytes, background_bytes) print(res)
スライダー チャートには透明な境界線の問題があるため、計算結果が正確ではない可能性があります。結果の bbox を修正するには、スライダー チャートの透明な境界線の幅を自分で見積もる必要があります。
ヒント: スライダーの背景が多すぎない場合は、simple_target パラメーターを追加できます。これは通常、jpg または bmp 形式の画像です。
slide = dddddocr.DdddOcr(det=False, ocr=False) with open('target.jpg', 'rb') as f:target_bytes = f.read() with open('background.jpg', 'rb') as f:background_bytes = f.read() res = slide.slide_match(target_bytes、background_bytes、simple_target=True)印刷(解像度)
a. アルゴリズム 2
アルゴリズム 2 は、2 つの画像の差分を比較することによってスライダーのターゲット ピットの位置を決定するものです。
図 A のターゲット ピットの影を含む全体像を参照してください。
参考画像b、全体図
slide = dddddocr.DdddOcr(det=False, ocr=False)with open('bg.jpg', 'rb') as f:target_bytes = f.read() with open('fullpage.jpg', 'rb') as f:background_bytes = f.read() img = cv2.imread("bg.jpg") res = slide.slide_comparison(target_bytes,background_bytes)print(res)
より柔軟な OCR 結果の制御と範囲制限を提供するために、プロジェクトは OCR 結果の範囲制限をサポートしています。
このとき、 classification
classification
は文字テーブル全体の確率を返します。もちろん、 set_ranges
メソッドを通じて出力文字の範囲probability=True
設定して、返される文字の範囲を制限することもできます。結果。
Ⅰ. set_ranges
メソッドは返される文字を制限します。
このメソッドは、入力が int 型の場合は組み込みの文字セット制限を受け入れ、文字列型がカスタム文字セットの場合は 1 つのパラメーターを受け取ります。
int型の場合は以下の表を参照してください
パラメータ値 | 意義 |
---|---|
0 | 純粋な整数 0 ~ 9 |
1 | 純粋な小文字の英語 az |
2 | 純粋な大文字の英語 AZ |
3 | 小文字の英語 az + 大文字の英語 AZ |
4 | 小文字の英語 az + 整数 0 ~ 9 |
5 | 大文字の英語 A ~ Z + 整数 0 ~ 9 |
6 | 小文字の英語 az + 大文字の英語 AZ + 整数 0 ~ 9 |
7 | デフォルトの文字ライブラリ - 小文字の英語 a z - 大文字の英語 AZ - 整数 0 ~ 9 |
文字列型の場合は、 "0123456789+-x/=""
のように、スペースを含まないテキストを単語候補として渡してください。
import ddddocrocr = ddddocr.DdddOcr()image = open("test.jpg", "rb").read()ocr.set_ranges("0123456789+-x/=")result = ocr.classification(image, Probability=True) )s = ""for i in result['確率']:s += result['charsets'][i.index(max(i))]print(s)
このプロジェクトは、dddd_trainer からのカスタマイズされたトレーニング済みモデルのインポートをサポートしています。参照インポート コードは次のとおりです。
import ddddocrocr = ddddocr.DdddOcr(det=False, ocr=False, import_onnx_path="myproject_0.984375_139_13000_2022-02-26-15-34-13.onnx", charsets_path="charsets.json")with open('test.jpg '、 'rb') as f:image_bytes = f.read()res = ocr.classification(image_bytes)print(res)
このプロジェクトではバージョン管理に Git を使用します。現在利用可能なバージョンはリポジトリで確認できます。
弟の OCR を使用して、純粋な VBA を使用してローカルでネットワーク検証コードを取得するための総合的なソリューションを提供します。
ddddocr 錆びたバージョン
キャプチャキラーの修正版
英数字 CAPTCHA モデルをトレーニングし、ddddocr を介してデプロイメント呼び出しを識別する
...
より優れた事例やチュートリアルの投稿を歓迎します。[投稿] で始まる新しい問題のタイトルを直接作成し、公開チュートリアル サイトへのリンクを添付することができます。記事の内容に基づいて Readme を表示するようにします。繰り返しではない、または重要な内容が含まれています。皆さん、ありがとうございます。
友達が多すぎる場合は、パスできない可能性があります。質問がある場合は、問題で通信できます。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細についてはライセンスを参照してください。