質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

578閲覧

画像から文字が抽出できない。

zuzu1984

総合スコア31

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/03/06 14:46

編集2019/03/06 14:53

指定した画像から文字を抽出して、文字認識を行いたいです。
(不必要なimportが混じっていますが、ご容赦願います)

書いているコードだと[tools]が空のため、[No OCR tool found]に繋がってしまいます。
どうすれば、文字抽出に進むことができるでしょうか。

【結果】

python

11 2No OCR tool found

【コード】

python

1 picno = 1 2 for i in range(5): 3 event_pic = testfld + '/Cut/988-3_no' + str(picno) + '.png' 4 print(picno) 5 6 #====================================== 7 # グレースケール 8 mov_in = cv2.imread(event_pic, cv2.IMREAD_GRAYSCALE) # 画像ファイrの読み込み 9 if mov_in is None: 10 print('ファイルが読み込めません') 11 import sys 12 sys.exit() 13 14 cv2.imwrite(testfld + '/mov_in_gray.png', mov_in) 15 cv2.waitKey(0) 16 17 #====================================== 18 # 2値化 19 img_gry = (testfld + '/mov_in_gray.png') 20 org_img = cv2.imread(img_gry, 0) 21 22 THRESHOLD = 215 # 閾値はNumpyで調べた 23 MAXVALUE = 255 # 255 = white 24 25 _, bin_cv2 = cv2.threshold(org_img, THRESHOLD, MAXVALUE, cv2.THRESH_BINARY_INV) 26 # [_INV]で背景白、黒文字にすることができる(Tesseractで読める絶対条件!) 27 28 bin_npy = np.zeros(org_img.shape, org_img.dtype) 29 bin_npy[np.where(org_img > THRESHOLD)] = MAXVALUE 30 31 cv2.imwrite(testfld + '/binary_no' +str(picno)+ '.png', bin_cv2) 32 33 #====================================== 34 # 文字認識 35 tools = pyocr.get_available_tools() 36 if len(tools) == 0: 37 print('No OCR tool found') 38 sys.exit() 39 tool = tools[0] 40## print("Will use tool '%s'" % (tool.get_name())) 41 42 langs = tool.get_available_languages() 43## print("Availble languages: %s" % ", ".join(langs)) 44 # 使用可能言語の確認なので、コメントアウト中 45 # [langs]に入れる略記の確認には使える 46 47 txt = tool.image_to_string( 48 Image.open(testfld + '/binary_no' +str(picno)+ '.png'), 49 lang = 'eng', 50 builder = pyocr.builders.TextBuilder() 51 ) 52 print(txt) 53 print('----------------------------') 54 55 if picno == 1: 56 ev01 = txt 57 elif picno == 2: 58 ev02 = txt 59 elif picno == 3: 60 ev03 = txt 61 elif picno == 4: 62 ev04 = txt 63 elif picno == 5: 64 ev05 = txt 65 66 picno = picno + 1 67 68 print('----------------------------') 69 print('Event5回取得') 70 print('----------------------------') 71 72 text = [ev01, ev02, ev03, ev04, ev05]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

pyocr はただのラッパーライブラリなので、OCR 本体を別途インストールする必要があります。

Ubuntu であれば、以下のコマンドでインストールできました。
他の OS であれば、Home · tesseract-ocr/tesseract Wiki を見ながら入れてください。

bash

1apt-get install -y tesseract-ocr 2apt-get install -y libtesseract-dev 3# 日本語データをダウンロードして、コピー 4wget https://github.com/tesseract-ocr/tessdata/raw/4.00/jpn.traineddata 5cp jpn.traineddata /usr/share/tesseract-ocr/tessdata/

python

1import pyocr 2from PIL import Image 3from pyocr.builders import TextBuilder 4 5tools = pyocr.get_available_tools() 6assert len(tools) > 0 # OCR ソフトがインストールされていないといけない 7 8tool = tools[0] 9print(tool.get_name()) 10 11langs = tool.get_available_languages() 12print('Available languages:', ', '.join(langs)) 13 14img = Image.open('test.png') 15txt = tool.image_to_string(img, lang='jpn', 16 builder=TextBuilder(tesseract_layout=6)) 17print(txt)

デフォルトだと認識精度がいまいちですね。設定等調整すると改善するのかもしれませんが。。。

イメージ説明

馴。" (バイ ソン) は、 柵のプロダラミンケ言語でぁる〟 コードがシンプ ルで扱ぃやすく設計されてぉり` C言語などに比べて、 さまざまなブロダラム を分かりゃす〈、 少なぃコー ド行数で書けるとぃった特徴かぁる〟

投稿2019/03/06 17:34

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問