光学文字認識の技術であるOCR(Optical Character Recognition)を使用します。
▼必要なライブラリとソフトのインストール
1. pyocrをインストールする
pip install pyocr
2. tesseract-OCRをインストールする
Windowsは下記リンク先にexeファイルがあります。
Home · UB-Mannheim/tesseract Wiki · GitHub
インストール途中で下記のようにチェックが外れてる箇所が表示されます。
ここで、Additional script data(download)内にあるJapaneseにチェックを入れます。
また、Additional language data(download)内にあるJapaneseにもチェックを入れる
3. tesseract-OCRのパス(path)を通す
まず、インストールされた先を一応確認します。64bit版でfor all userの場合は、例えば次にインストされます。C:\Program Files\Tesseract-OCR
次に、PCアイコンを右クリックしてプロパティ>システムの詳細設定>環境変数>システム環境変数のPathを選択した状態で「編集」>空白行に、上記tesseract-OCRがインストールされたパスを入力して再起動します。
▼本コードの実施例
下図はテスト用の画像ファイルです(wikiより)。文章が複数行に渡って記載されています。
本コードを実行すると、文字を認識して下図のようにテキストファイルへ出力します。
■本プログラム
import os, sys
from PIL import Image
import pyocr
import pyocr.builders
def main():
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
lang_list = [str for str in langs if str == target_langauge]
lang = lang_list[0]
print("Will use lang '%s'" % (lang))
for file in files:
txt = tool.image_to_string(
Image.open(file),
lang=lang,
builder=pyocr.builders.TextBuilder()
)
print(r'##############', file + '\n')
print(txt)
with open(file[:-4] + '.txt', 'w') as f:
f.write(txt)
if __name__ == '__main__':
files = ['test.png']
target_langauge = 'jpn'
main()
以上
<広告>
リンク