

[pipを使わずwindows10にtesseractとPyOCRをインストールする方法](https://haitenaipants.hatenablog.com/entry/2018/06/02/193554)
のサイトを参考に  
以下のプログラムを実行するとエラーが出てしまいます。どうしてでしょうか？

**エラー内容**

[code]

        File "<ipython-input-15-8474a031face>", line 4
        print("No OCR tool found")
            ^
    IndentationError: expected an indented block
    
[/code]

**プログラム文**

[code]

    tools = pyocr.get_available_tools()
    if len(tools) == 0:
    print("No OCR tool found")
    sys.exit(1)
    
[/code]


CC BY-SA 4.0
2019-10-25T04:50:37.733
59954
2019-10-25T06:04:22.403
2019-10-25T06:04:22.403
3060
36347
question
python python3
pythonのprintのエラーについて

[code]

    tools = pyocr.get_available_tools()
    if len(tools) == 0:
      print("No OCR tool found")        # two space before code
    sys.exit(1)
    
[/code]


CC BY-SA 4.0
2019-10-25T05:47:32.360
59956
2019-10-25T05:47:32.360
36348
59954
answer


**1点目**  
リンク先のソースをそのままコピペした場合、`print` と `sys.exit` の前がそれぞれ **全角スペース** になっています。

**2点目**  
Pythonではインデントが非常に重要です。プログラムが何をしているのかを見極めましょう。

「結果が無かったらprintで文字を出力してプログラムを終了する」なので、それぞれの命令を  
インデント(字下げ)する必要があります。

[code]

    if len(tools) == 0:
      print("No OCR tool found")
      sys.exit(1)
    
[/code]

**3点目**  
リンク先では説明のため段落が分かれていますが、エラーメッセージを見る限りあなたが実行したソースではモジュールのインポート記述が足りていません。正しくは以下の様になるはずです。

[code]

    from PIL import Image
    import sys
    import pyocr
    import pyocr.builders
    
    tools = pyocr.get_available_tools() 
    
    if len(tools) == 0:
      print("No OCR tool found")
      sys.exit(1)
    
[/code]


CC BY-SA 4.0
2019-10-25T05:47:58.180
59957
2019-10-25T05:47:58.180
3060
59954
answer


> IndentationError: expected an indented block

このエラーを日本語に訳すと「インデントのエラー：ここにインデントされたブロックが入るはずです」というものです。

次のコードにするとこのエラーが出なくなるはずです。

[code]

    tools = pyocr.get_available_tools()
    if len(tools) == 0:
        print("No OCR tool found")
        sys.exit(1)
    
[/code]

このプログラムでは、もし `len(tools) == 0` が成り立つのであれば、`print("No OCR tool found")` と
`sys.exit(1)` というプログラムを実行します。成り立っていなければ何もしません。

Python ではこのように、if文の条件が成り立っていたら何を実行するかを、行の最初に空白（インデント）を入れることで表現します。


CC BY-SA 4.0
2019-10-25T05:48:18.243
59958
2019-10-25T05:48:18.243
19110
59954
answer