ホームページ  >  記事  >  バックエンド開発  >  Pythonを使用して写真内のテキストを識別する方法

Pythonを使用して写真内のテキストを識別する方法

尚
転載
2020-06-15 16:42:354710ブラウズ

Pythonを使用して写真内のテキストを識別する方法

#Tesseract

テキスト認識は ORC の一部です。ORC は光学式文字認識を意味し、一般にテキスト認識として知られています。 Tesseract はテキスト認識ツールで、Python と併用することでテキスト認識を素早く実装できます。しかしその前に、面倒な作業を完了する必要があります。

(1) Tesseract のインストールと設定

https://digi.bib.uni-mannheim.de/tesseract/

# から Tesseract をダウンロードします。 Pythonを使用して写真内のテキストを識別する方法#誰もが選択できる多くのバージョンがあり、自分のニーズに応じて選択できます。このうち、w32 は 32 ビット システム、w64 は 64 ビット システムを意味しますので、適切なバージョンを選択するだけでダウンロード速度が遅くなる場合があります。

インストールするときは、インストールの場所を確認し、インストール ディレクトリをシステム パス変数に設定する必要があります。パスは D:\CodeField\Tesseract-OCR です。

##「マイ コンピュータ/このコンピュータ」を右クリックし、「プロパティ」→「システムの詳細設定」→「環境変数」→「パス」→「編集」→「作成」を選択します。新しいものを作成し、そこにパスをコピーします。システム変数を追加した後、構成を完了するには、「OK」をクリックする必要があります。 Pythonを使用して写真内のテキストを識別する方法

(2) 言語パックのダウンロード

Tesseract はデフォルトでは中国語をサポートしていません。中国語またはその他の言語を認識したい場合は、対応する言語パックをダウンロードする必要があります。ダウンロード アドレスは次のとおりです。以下は次のとおりです: https://tesseract -ocr.github.io/tessdoc/Data-Files、Web サイトに入った後、下にスクロールします:

中国語言語パッケージが 2 つあります、中国語 (簡体字) と中国語 (繁体字) が 1 つあり、簡体字中国語と繁体字中国語です。ダウンロードする必要があるものを選択できます。ダウンロードが完了したら、Tesseract のパスの下の tessdata ディレクトリにダウンロードする必要があります。パスは D:\CodeField\Tesseract-OCR\tessdata です。 Pythonを使用して写真内のテキストを識別する方法

(3) その他のモジュールのダウンロード

上記の手順に加えて、2 つのモジュールもダウンロードする必要があります。

pip install pytesseract
pip install pillow

最初のモジュールはテキスト認識用で、 2 つ目はテキスト認識用、もう 1 つは画像読み取り用です。次に、テキスト認識を実行します。

テキスト認識

(1) 単一画像認識

次の操作は非常に簡単で、認識したい画像は次のとおりです。

次のステップはテキスト認識コードです: Pythonを使用して写真内のテキストを識別する方法

import pytesseract
from PIL import Image
# 读取图片
im = Image.open('sentence.jpg')
# 识别文字
string = pytesseract.image_to_string(im)
print(string)

認識結果は次のとおりです:

Do not go gentle into that good night!

デフォルトは次のとおりです。英語をサポートしているため、直接認識できますが、中国語やその他の言語を認識したい場合は、いくつかの変更を加える必要があります。

import pytesseract
from PIL import Image
# 读取图片
im = Image.open('sentence.png')
# 识别文字,并指定语言
string = pytesseract.image_to_string(im,)
print(string)

認識中に、lang='chi_sim' を設定します。言語を簡体字中国語に変更します。この設定は、tessdata ディレクトリに簡体字中国語パッケージがある場合にのみ有効になります。以下は認識に使用した画像です:

認識結果は次のとおりです: Pythonを使用して写真内のテキストを識別する方法

おとなしくおやすみしないでください

画像の内容は正確に特定されました。知っておく必要があることの 1 つは、言語を簡体字中国語またはその他の言語に設定した後でも、Tesseract は英語の文字を認識できるということです。

(2) バッチ画像認識

単一画像認識をリストアップしたので、バッチ画像認識の機能が必要です。これには、次のような txt ファイルを準備する必要があります。次の内容の text.txt ファイルを用意します。

sentencePythonを使用して写真内のテキストを識別する方法
sentencePythonを使用して写真内のテキストを識別する方法

コードを次のように変更します。

import pytesseract
# 识别文字
string = pytesseract.image_to_string('text.txt',)
print(string)

ただし、txt ファイルを自分で記述するのはどうしても面倒なので、修正することができます。

import os
import pytesseract
# 文字图片的路径
path = 'text_img/'
# 获取图片路径列表
imgs = [path + i for i in os.listdir(path)]
# 打开文件
f = open('text.txt', 'w+', encoding='utf-8')
# 将各个图片的路径写入text.txt文件当中
for img in imgs:
    f.write(img + '\n')
# 关闭文件
f.close()
# 文字识别
string = pytesseract.image_to_string('text.txt',)
print(string)

このように、バッチ認識を実行するには、テキスト画像のルート ディレクトリを渡すだけで済みます。テスト中に、Tesseract は手書きや楷書などのエレガントなフォントを正確に認識していないことが判明し、一部の複雑な文字の認識も改善する必要があります。

ただし、Song PrincessやBlockchainなどのストロークが厳密なフォントの認識精度は非常に高いです。また、画像の傾きがある角度以上になると認識結果が大きく異なります。

さらに関連する知識については、

Python ビデオ チュートリアル

をご覧ください。

以上がPythonを使用して写真内のテキストを識別する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。