記事がよく書かれていて、ブログ記事のデータが必要な場合は、公式アカウントに注意してください:[Z氏のメモ]、50以上のPython電子書籍と200G以上の高品質のビデオ資料が用意されていますあなた。舞台裏の返信キーワード:1024を取得できます;著者[個人のWeChat]を追加すると、著者と直接通信できます。
テキストOCR認識技術は、その精度や認識速度が私たちの日常のニーズを満たすことができるかどうかに関係なく、今ではかなり成熟しています。今日はPythonパッケージを紹介します。パッケージの主な機能は、OCR認識用で、パッケージ名はPyteeseractです。このパッケージの数行のコードの助けを借りて、テキスト画像をすばやく識別できます
Pytesseractパッケージは、Hewlett Packard Labによって開発されたオープンソースツールTesseractによって取得され、2005年にオープンソースとして実装されました。2006年以降、Googleといくつかの優れたオープンソース貢献者によって共同で開発および保守されています。
Tesseractは、3.xバージョン以降徐々に成熟し、複数の画像形式をサポートし、多言語のテキスト認識を徐々に追加しています。ただし、Tesseract 3.xバージョンは、従来のコンピュータービジョンアルゴリズムに基づいており、過去のディープラーニングの迅速な反復の恩恵を受けています。精度と速度の両方が従来のアルゴリズムよりも優れています。バージョン4.0以降、Tesseractは認識LSTMに基づくディープラーニングモジュールを追加し、LSTMはRNN(循環畳み込みニューラルネットワーク)として分類できます。
この記事の実験はTesseract3.05バージョンに基づいています。最後に、中国語の認識の精度がわずかに低くなっています。4.0+が使用されていないことが原因である可能性があります。後で、4.0 +または5.0+(安定しすぎない)、ディープラーニングモジュールに基づいていますが、怠惰すぎるので変更したくありません、、、
まず、実験環境について説明します。
-
os:Win10;
-
Python 3.8;
-
pyteeseract 0.3.8;
-
Tesseract 3.05;
pyteeseractのインストール
1.テッセラクトツールをインストールします
pyteeseract認識機能はtesseractオープンソースツールに基づいているため、他のパッケージと比較して、pyteeseractのインストール手順は少し面倒です。最初のステップはtesseract、インストールパッケージのダウンロードリンクをインストールすることです。
https://digi.bib.uni-mannheim.de/tesseract/
3.0以降、4.0以降、5.0以降のバージョンがあり、ダウンロード後にインストールします(インストール方法はばかタイプのインストールです)
tesseractが正常にインストールされたら、tesseract.exeが保存されているファイルパスを環境変数に追加する必要があります。次の図に示すように、私のtesseract.exeが保存されているフォルダーはF:/ Program Files / Tesseract-OCRです。そして環境変数を追加します。
2、pip install pytesseract
コマンドラインで、pipツールを使用してpytesseractパッケージをダウンロードします
pip install pyteeseract
3.pytesseract.pyスクリプトを変更します
手順2に基づいて、pytesseractのインストールパスを見つけます。PythonがAnacondaを介してインストールされている場合、インストールパスは通常Anaconda / Lib / site-packagesフォルダーにあります。見つけた後、pytesseractフォルダーでpytesseract.pyを見つけます。スクリプトファイル、
それを見つけたら、メモ帳でpyresseract.pyを開き、ctrl + fクイック検索機能を使用してtesseract_cmdを見つけ、次のファイルパス情報を変更します(上記のtesseract.exeインストールパスに置き換えます)。
2.pytesseractの使用
パッケージの使用は比較的簡単で、数行のコードを取得できます。次のコードは、画像内の文字を識別して文字列に出力し、認識言語を選択します。英語(lang = 'eng'パラメータを変更できます。 )
import pytesseract
import cv2
img_path = "G:/Coding/One_hundred_days/Data/orc_image2.jpg"
# 下面一行代码很重要
tessdata_dir_config = '--tessdata-dir "F://Program Files//Tesseract-OCR//tessdata"'
im = cv2.imread(img_path)
img = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
text = pytesseract.image_to_string(img,lang= 'eng',config= tessdata_dir_config,)
print(text)
認識前の効果プレビュー
認識後
pytesseractは、OpenCVおよびPILによって読み取られた画像を入力としてサポートしますが、画像形式はRGBモードである必要があるため、OpenCVが読み取った後、画像のBGRモードをRGBに変換するコード行が追加されます。
上記の例の次のコード行は削除できないことに注意してください(後でimage_to_string()関数のconfigパラメーターの設定に使用されます)
tessdata_dir_config = '--tessdata-dir "F://Program Files//Tesseract-OCR//tessdata"'
それ以外の場合は、次のエラーが報告されます。tessdataファイルのパスの場所が失敗しました。
言語の読み込みに失敗しました 'eng' Tesseractはどの言語も読み込めませんでした!正八胞体を初期化できませんでした。 ')
tessdataファイルパスは、画像内のさまざまな言語を識別するために使用され、langパラメータを変更することによって設定される言語パッケージファイルを格納しますが、知っておく必要があるのは、tesseractツールのデフォルト言語がeng(英語)であることです)最初に、tesseractを使用してさまざまな言語を識別する必要がある場合は、対応する言語パックファイルをダウンロードして、tessdataフォルダーにインストールする必要があります。
たとえば、上記の場合は英語を使用しました。ここでは、画像の中国語の文字を認識したいと思います。testdataに中国語の言語パックをダウンロードする必要があります。各言語パックのダウンロードアドレスはhttps://github.com/です。 tesseract-ocr / tessdata
次に、コードのimage_to_string()のlangパラメーターをchi_simに設定します。
認識前の効果プレビュー
認識後、認識効果は中国語にはあまり良くありませんが、バージョンの理由を推測してください:
pyteeseractその他の使用法
1.上記に加えて、画像内のコンテンツ認識を直接文字列に変換したり、エクスポート用のpdfファイルに直接変換したりすることもできます。
# Get a searchable PDF
pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf')
with open('test.pdf', 'w+b') as f:
f.write(pdf) # pdf type is bytes by default
2.各文字のフレーム情報が認識され、画像内の位置の解像度範囲が認識されていると推定されます。
print(pytesseract.image_to_boxes(img_path,lang = 'chi_sim',config= tessdata_dir_config))
3.まだ紹介されていないpyteeseractの使い方はまだたくさんあります。興味のある方は公式サイトにアクセスして紹介してください。リンクは以下の通りです。
https://pypi.org/project/pytesseract/