光学的文字認識(OCR)は、画像、スキャンされた文書、さらには手書きのメモから読み取れるテキストを抽出する技術です。Pythonでは、OCRツールは年々進化し、最新バージョンではこれらのライブラリがさらに強力で効率的なソリューションを提供しています。
この記事では、Pythonでトップの7つのOCRライブラリを取り上げ、それぞれの強み、ユニークな機能、およびコード例を紹介し、始めるのに役立ちます。
1. Tesseract OCR(pytesseract)
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 で使用する場合は、pytesseract パッケージを pip パッケージマネージャー を使用してインストールする必要があります。
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. EasyOCR
EasyOCR は、80以上の言語をサポートし、初心者向けに使いやすい優れた Python OCR ライブラリです。深層学習技術に基づいて構築されており、現代の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
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ラッパーです。PythonアプリケーションにOCR機能を統合するためのシンプルなインターフェースを提供します。
主な特徴:
- 複数の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]
今、pyocr
とpillow
ライブラリをpip
を使用してインストールできます。
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. PaddleOCR
PaddleOCRは、深層学習フレームワークであるPaddlePaddleによって開発されたOCRライブラリです。80以上の言語をサポートし、深層学習モデルを使用することで最先端の精度を提供します。
主な特徴:
- 複雑な背景を持つ画像に特に適した高いパフォーマンス。
- テキストの検出、認識、およびレイアウト解析をサポート。
- さまざまな言語向けの事前トレーニング済みモデルを含む。
PaddleOCRをLinuxにインストールするには、次のコマンドを使用します。
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
Krakenは、歴史的および多言語テキストに特化した高性能OCRライブラリです。OCRopusの上に構築され、複雑なレイアウトやテキスト抽出のための追加機能を提供します。
主な特徴:
- 古い書籍や多言語OCRに最適。
- 複雑なテキストレイアウトや歴史的フォントを処理します。
- 機械学習を使用して認識精度を向上させます。
LinuxにKrakenをインストールするには、次のコマンドを使用します:
pip3 install kraken OR pip install kraken
次に示すPythonの例は、krakenライブラリを使用して画像からテキストを抽出します:
import kraken # Load the model and recognize text text = kraken.binarize("image_sample.png") # Print the recognized text print(text)
7. Textract(AWS)
AWS Textractは、AmazonのクラウドベースのOCRサービスであり、高い精度で文書やフォームを解析しテキストを抽出できます。他のAWSサービスとシームレスに統合されています。
主な機能:
- スケーラブルなソリューションを備えたクラウドベースのOCR。
- 表やフォームを含む文書構造の分析をサポート。
- AWSサービスとの統合による追加のデータ処理。
LinuxにTextractをインストールするには、次のコマンドを使用します:
pip3 install boto3 OR pip install boto3
次に示すPythonスクリプトは、AWS Textractを使用して文書(たとえば、スキャンされたPDFや画像ファイル)からテキストを抽出する例です。
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などのライブラリがより柔軟性と精度を提供しています。
Source:
https://www.tecmint.com/python-text-extraction-from-images/