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** より認識精度が高い場合が多いです。
コメント
コメントを投稿