python_画像内の文字列を抽出できるライブラリは?


pythonのライブラリで、


画像の中の文字列を抽出して、


strの型の文字列を取得できるようなライブラリはないでしょうか?



Pythonで画像内の文字を抽出して

`str`型の文字列として取得するには、

OCR(Optical Character Recognition)

のライブラリを使用します。


代表的なものとして以下のものがあります。


---


### 1. **Tesseract OCR (`pytesseract`)**


Googleが提供するオープンソースのOCRエンジン 

**Tesseract** をPythonで使うことができます。


#### インストール:


```sh


pip install pytesseract


```

Tesseract本体も必要なので、以下のリンクからインストールしてください:


- [公式サイト](https://github.com/tesseract-ocr/tesseract)


Windowsの場合、インストール後に`PATH`を通し、

Pythonから使えるようにする必要があります。



#### 使用方法:

```python

import pytesseract

from PIL import Image


# 画像を開く

image = Image.open("sample.png")


# 文字を抽出

text = pytesseract.image_to_string(image, lang="eng")  # 言語設定 (日本語なら 'jpn')

print(text)

```


---


### 2. **EasyOCR**


Tesseractより精度が高く、

多言語対応しているOCRライブラリです。


#### インストール:

```sh


pip install easyocr


```


#### 使用方法:


```python


import easyocr


reader = easyocr.Reader(['ja', 'en'])  # 日本語と英語対応

text_list = reader.readtext("sample.png", detail=0)  # 文字のみ取得

text = "\n".join(text_list)

print(text)



```


---


### 3. **Google Cloud Vision API**

GoogleのクラウドOCRを使う方法。

高精度なOCRが可能ですが、APIキーが必要です。


#### インストール:

```sh


pip install google-cloud-vision


```


#### 使用方法:

```python

from google.cloud import vision

import io


client = vision.ImageAnnotatorClient()


with io.open("sample.png", "rb") as image_file:

    content = image_file.read()


image = vision.Image(content=content)

response = client.text_detection(image=image)

text = response.text_annotations[0].description if response.text_annotations else ""


print(text)


```


※APIキーの設定が必要。


---


### どれを使うべきか?


- **手軽に試したい**

→ `pytesseract`


- **高精度なOCRが必要**

→ `EasyOCR`


- **クラウドを活用し高精度で解析**

→ `Google Cloud Vision API`



日本語のOCRが必要なら 

**EasyOCR** の方が 

**Tesseract** より認識精度が高い場合が多いです。




コメント