teratail header banner
teratail header banner
質問するログイン新規登録
Python

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

Q&A

1回答

658閲覧

Windows10のpythonでOCR機能が動きません

ghon

総合スコア10

Python

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

0グッド

0クリップ

投稿2024/03/01 10:55

0

0

実現したいこと

Win10にPython 3.12.2を入れていますが
OCR機能が実装出来ません。

発生している問題・分からないこと

tmp6.pyというファイルにソースを書いて
D:\tmp>tmp6.py
として実行させていますけれど、エラーが
出てしまいます。

エラーメッセージ

error

1D:\tmp\tmp6.py:6: SyntaxWarning: invalid escape sequence '\P' 2 path_tesseract = "C:\Program Files\Tesseract-OCR\tesseract.exe" 3D:\tmp\tmp6.py:7: SyntaxWarning: invalid escape sequence '\P' 4 if path_tesseract not in os.environ["C:\Program Files\Tesseract-OCR\tesseract.exe"].split(os.pathsep): 5D:\tmp\tmp6.py:8: SyntaxWarning: invalid escape sequence '\P' 6 os.environ["C:\Program Files\Tesseract-OCR\tesseract.exe"] += os.pathsep + path_tesseract 7Traceback (most recent call last): 8 File "D:\tmp\tmp6.py", line 7, in <module> 9 if path_tesseract not in os.environ["C:\Program Files\Tesseract-OCR\tesseract.exe"].split(os.pathsep): 10D:\tmp\tmp6.py:1: SyntaxWarning: invalid escape sequence '\P' 11 from PIL import Image 12 ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 13 File "<frozen os>", line 685, in __getitem__ 14KeyError: 'C:\\Program Files\\Tesseract-OCR\tesseract.exe' 15

該当のソースコード

Python

1from PIL import Image 2import pyocr 3import pyocr.builders 4import os 5 6path_tesseract = "C:\Program Files\Tesseract-OCR\tesseract.exe" 7if path_tesseract not in os.environ["C:\Program Files\Tesseract-OCR\tesseract.exe"].split(os.pathsep): 8 os.environ["C:\Program Files\Tesseract-OCR\tesseract.exe"] += os.pathsep + path_tesseract 9 10# OCRエンジンの取得 11tools = pyocr.get_available_tools() 12tool = tools[0] 13 14# 画像の読み込み 15img_org = Image.open("./hoge.png") 16 17# OCRの実行 18builder = pyocr.builders.TextBuilder() 19result = tool.image_to_string(img_org, lang="jpn", builder=builder) 20 21print(result) 22

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

『python OCR』でのgoogle検索結果丸々コピペです。
tesseract.exeは別途インストール済です。

補足

特になし

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

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

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

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

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

guest

回答1

0

エラーメッセージの原因は、Windowsのパスの表記がpythonの文字列の表記と整合しないことによるものです。
Windowsのパスの表記に使う「\(バックスラッシュ)」もしくは「(円記号)」はpythonの文字列に含まれると特別な意味(エスケープ文字)となるので、そのまま表記することはできません。

表記するにはいくつか方法があります。
1 raw文字列にする
引用符の前にrを追加すると、バックスラッシュが特別な意味を持たなくなります。
path_tesseract = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

2 バックスラッシュをエスケープする
バックスラッス文字は自身をエスケープすることで表現できます。
path_tesseract = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"

コードの内容が正しいかどうかは見ていないので不明です。

投稿2024/03/01 12:18

TakaiY

総合スコア14542

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

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

ghon

2024/03/01 12:48

ありがとうございます。 質問に書かせて戴きましたコードでは別の エラーが出てしまいましたけれど、ネット 検索結果の他のコードでの同様のエラーは 見事に解決して動きました(下記) #ライブラリインポート import pyocr from PIL import Image, ImageEnhance import os #Pah設定 TESSERACT_PATH = r'C:\Program Files\Tesseract-OCR' #インストールしたTesseract-OCRのpath TESSDATA_PATH = r'C:\Program Files\Tesseract-OCR\tessdata' #tessdataのpath os.environ["PATH"] += os.pathsep + TESSERACT_PATH os.environ["TESSDATA_PREFIX"] = TESSDATA_PATH #OCRエンジン取得 tools = pyocr.get_available_tools() tool = tools[0] #OCRの設定 ※tesseract_layout=6が精度には重要。デフォルトは3 builder = pyocr.builders.TextBuilder(tesseract_layout=6) #解析画像読み込み img = Image.open('hoge.png') #他の拡張子でもOK #適当に画像処理(何もしないと結構制度悪いです・・) img_g = img.convert('L') #Gray変換 enhancer= ImageEnhance.Contrast(img_g) #コントラストを上げる img_con = enhancer.enhance(2.0) #コントラストを上げる #画像からOCRで日本語を読んで、文字列として取り出す txt_pyocr = tool.image_to_string(img_con , lang='jpn', builder=builder) #半角スペースを消す ※読みやすくするため txt_pyocr = txt_pyocr.replace(' ', '') print(txt_pyocr)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問