画像からテキストへの変換に最適な 7 つの Python OCR ライブラリ
光学文字認識 (OCR) は、画像、スキャンした文書、さらには手書きのメモから読み取り可能なテキストを抽出するテクノロジーです。 Python のOCR ツールは長年にわたって大幅に進化しており、最新バージョンでは、これらのライブラリはさらに強力で効率的なソリューションを提供するようになりました。
この記事では、Python の上位 7 つの OCR ライブラリについて説明し、その長所、独自の機能、開始に役立つコード例に焦点を当てます。
1. Tesseract OCR(パイテッセラクト)
Tesseract は、間違いなく Python エコシステムで最も人気があり、広く使用されているOCR ライブラリです。元々はHPによって開発され、現在はGoogleによって保守されているTesseractは、100以上の言語に高品質のOCR機能を提供します。
主な機能:
- オープンソースで無料で使用できます。
- 非ラテン文字を含む複数の言語をサポートします。
- 画像、スキャンした文書、PDF 内のテキストを認識します。
- 特殊なユースケース向けにカスタム トレーニング データを使用してカスタマイズできます。
- OpenCV などの前処理ツールとうまく連携して精度を向上させます。
Linux にTesseract OCR をインストールするには、ディストリビューションに応じて次の手順に従います。
sudo apt install tesseract-ocr [On Debian, Ubuntu and Mint]
sudo yum install tesseract [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract [On Gentoo Linux]
sudo apk add tesseract [On Alpine Linux]
sudo pacman -S tesseract [On Arch Linux]
sudo zypper install tesseract [On OpenSUSE]
sudo pkg install tesseract [On FreeBSD]
Tesseract をインストールしたら、それをPython で使用する場合は、pip パッケージ マネージャーを使用して pytesseract パッケージをインストールする必要があります。
pip3 install pytesseract
OR
pip install pytesseract
pytesseract
ライブラリで Tesseract OCR を使用して画像からテキストを抽出する Python コードの例を次に示します。
import pytesseract
from PIL import Image
Load an image
img = Image.open("image_sample.png")
Use Tesseract to extract text
text = pytesseract.image_to_string(img)
Print the extracted text
print(text)
2.簡単OCR
EasyOCR も優れた Python OCR ライブラリで、80 以上の言語をサポートしており、初心者にとって使いやすいものです。深層学習技術に基づいて構築されているため、最新の OCR 技術を活用したい人にとっては優れた選択肢となります。
主な機能:
- 深層学習モデルによる高精度。
- 幅広い言語をサポートします。
- 縦書き画像や多言語画像内のテキストを検出できます。
- シンプルでわかりやすいAPI。
Linux に EasyOCR をインストールするには、ディストリビューションに基づいて次の pip
コマンドを使用できます。
pip3 install easyocr
OR
pip install easyocr
インストールが完了したら、EasyOCR を使用して画像からテキストを抽出できます。
import easyocr
Initialize the OCR reader
reader = easyocr.Reader(['en'])
Extract text from an image
result = reader.readtext('image_sample.png')
Print the extracted text
for detection in result:
print(detection[1])
3.オクロパス
OCRopus はGoogleによって開発されたオープンソース OCR システムです。主に歴史的な文書や書籍に使用されますが、OCropus はさまざまなテキスト抽出タスクにも適用できます。
主な機能:
- 文書レイアウト分析とテキスト抽出を専門としています。
- モジュール性を念頭に置いて構築されており、簡単なカスタマイズが可能です。
- 複数ページのドキュメントや大規模なデータセットを操作できます。
画像からテキストを抽出する Python コードの例を次に示します。
import subprocess
Use OCRopus to process an image
subprocess.run(['ocropus', 'identify', 'image_sample.png'])
4.PyOCR
PyOCR は、Tesseract や CuneiForm など、いくつかの OCR エンジンの Python ラッパーです。 OCR 機能を Python アプリケーションに統合するためのシンプルなインターフェイスを提供します。
主な機能:
- 複数の OCR エンジンと接続できます。
- テキスト抽出のためのシンプルな API を提供します。
- 結果を向上させるために画像前処理ライブラリと組み合わせることができます。
PyOCR にはTesseract (OCR エンジン) とPillow (画像処理ライブラリ) が必要です。次のコマンドを使用してインストールできます。
sudo apt install tesseract-ocr [On Debian, Ubuntu and Mint]
sudo yum install tesseract [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract [On Gentoo Linux]
sudo apk add tesseract [On Alpine Linux]
sudo pacman -S tesseract [On Arch Linux]
sudo zypper install tesseract [On OpenSUSE]
sudo pkg install tesseract [On FreeBSD]
これで、pip
を使用して pyocr
ライブラリと pillow
ライブラリをインストールできます。
pip3 install pyocr pillow
OR
pip install pyocr pillow
以下は、PyOCR と Tesseract を使用して画像からテキストを抽出する Python の例です。
import pyocr
from PIL import Image
Choose the OCR tool (Tesseract or CuneiForm)
tool = pyocr.get_available_tools()[0]
Load the image
img = Image.open('image_sample.png')
Extract text from the image
text = tool.image_to_string(img)
Print the extracted text
print(text)
5.パドルOCR
PaddleOCR は、 深層学習フレームワークのPaddlePaddle によって開発された OCR ライブラリです。 80 を超える言語をサポートし、深層学習モデルの使用により最先端の精度を提供します。
主な機能:
- 特に複雑な背景を持つ画像の場合に高いパフォーマンスを発揮します。
- テキストの検出、認識、レイアウト分析をサポートします。
- さまざまな言語の事前トレーニング済みモデルが含まれています。
Linux にPaddleOCR をインストールするには、次のコマンドを使用します。
pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr
以下は、paddleocr ライブラリを使用して画像からテキストを抽出する Python の例です。
from paddleocr import PaddleOCR
Initialize the OCR
ocr = PaddleOCR(use_angle_cls=True, lang='en')
Perform OCR on an image
result = ocr.ocr('image_sample.png', cls=True)
Print the extracted text
for line in result[0]:
print(line[1])
6.クラーケン
Kraken は、歴史的テキストおよび多言語テキスト用に特別に設計された高性能 OCR ライブラリです。これはOCropus 上に構築されており、複雑なレイアウトやテキスト抽出のための追加機能を提供します。
主な機能:
- 古書や多言語OCRに最適です。
- 複雑なテキスト レイアウトや歴史的なフォントを処理します。
- 機械学習を使用して認識精度を向上させます。
Linux にKraken をインストールするには、次のコマンドを使用します。
pip3 install kraken
OR
pip install kraken
以下は、kraken ライブラリを使用して画像からテキストを抽出する Python の例です。
import kraken
Load the model and recognize text
text = kraken.binarize("image_sample.png")
Print the recognized text
print(text)
7. テキストラクト (AWS)
AWS Textract は、ドキュメントやフォームを分析し、高精度でテキストを抽出できる Amazon のクラウドベースの OCR サービスです。他の AWS サービスとシームレスに統合されます。
主な機能:
- スケーラブルなソリューションを備えたクラウドベースの OCR。
- 表やフォームなどの文書構造分析をサポートします。
- さらなるデータ処理のための AWS サービスとの統合。
Linux にテキストをインストールするには、次のコマンドを使用します。
pip3 install boto3
OR
pip install boto3
以下は、AWS Textract を使用してドキュメント (スキャンされた PDF または画像ファイルなど) からテキストを抽出する Python スクリプトの例です。
import boto3
Initialize a Textract client
client = boto3.client('textract')
Path to the image or PDF file you want to analyze
file_path = 'path_to_your_file.png' # Replace with your file path
Open the file in binary mode
with open(file_path, 'rb') as document:
# Call Textract to analyze the document
response = client.detect_document_text(Document={'Bytes': document.read()})
Print the extracted text
for item in response['Blocks']:
if item['BlockType'] == 'LINE':
print(item['Text'])
結論
Python で適切な OCR ライブラリを選択するかどうかは、特定の使用例、言語要件、処理するドキュメントの複雑さによって異なります。歴史的な文書、多言語テキスト、または単純なスキャンされた PDF を扱う場合でも、これらのライブラリはテキスト抽出のための強力なツールを提供します。
初心者にとっては、使いやすさと広く採用されているため、Tesseract と EasyOCR が優れた出発点となります。ただし、より高度なタスクや特殊なタスクの場合は、PaddleOCR、OCropus、Kraken などのライブラリを使用すると、より優れた柔軟性と精度が得られます。