フッターコンテンツにスキップ
OCRツール

Easyocr対Tesseract (OCR機能の比較)

光学式文字認識(OCR)は、スキャンされた紙の文書、PDFファイル、またはカメラで撮影された高解像度画像などのドキュメントを処理し、印刷可能で検索可能なデータに変換する技術です。 抽出されたテキストの特徴の認識と形態学的操作により、データ入力の自動化を行うOCRが可能になり、情報処理プロセスを加速し、より正確にします。

OCRはドキュメントをスキャンし、文字(文字、数字、記号など)を認識し、機械が読み取れる形式に変換します。 その用途には、書籍のデジタル化、フォーム処理、ドキュメントワークフローの自動化、盲目者へのアクセシビリティの向上が含まれます。 深層学習とAIの進化により、OCRエンジンは複雑な形式や多言語文書、低品質の画像の認識に非常に正確になりました。

EasyOCR、Tesseract OCR、Keras-OCR、IronOCRなどの人気のあるOCRツールやライブラリが、この機能を現代のアプリケーションに統合するためによく使用されます。

EasyOCR

EasyOCRは、画像からのテキスト抽出をシンプルかつ効率的にすることを目指したオープンソースのPythonライブラリです。 深層学習技術を使用し、ラテン語、中国語、アラビア語を含む80以上の言語に対応しています。 そのAPIは非常にシンプルで、誰でもアプリケーション内でOCR予測機能を容易に統合できます。EasyOCRとTesseractを使用すれば、簡単なドキュメントのデジタル化、ナンバープレート認識、または写真からのテキスト抽出ができます。

EasyOCRは、特に多行テキストや低品質の画像での強力なテキスト認識機能でよく知られています。 したがって、依存関係が少ないため、実用的なユースケースに適しています。 それは軽量で、現代のハードウェアでGPUを必要とせずに効率的に動作するため、柔軟なOCR機能を必要とする開発者には非常に魅力的です。

EasyOCRの機能

EasyOCRを包括的で強力なOCRユーティリティにするいくつかの機能があります:

  • 80以上の言語を認識: EasyOCRは、複雑な単語や言語、ラテン語ベースの言語を含む中国語、日本語、韓国語、アラビア語を読み取ることができます。

  • 高度な深層学習ベースの認識: ノイズが多い、または歪んだテキストレイアウトや画像において高性能と精度を提供する高度な深層学習技術をサポートします。

  • シンプルなAPI: この使いやすいAPIにより、さらなる設定なしでアプリケーション内で簡単にOCR機能を手に入れることができます。

  • マルチラインテキスト検出: 文書、書籍、多行標識に役立つ多行のテキスト認識を行います。

  • 軽量: CPU上で十分に動作し、パフォーマンスを向上させるためにGPUを活用できますが、それでも基本的なハードウェアでの動作が可能です。

  • 画像の前処理: ノイズの多い、または低解像度の画像からのOCR出力をクリーンアップするための基本的な画像前処理ツールが利用可能です。

  • 柔軟な展開: 様々なプラットフォームで動作し、Pythonアプリケーションに比較的簡単に組み込むことができます。

インストール

EasyOCRはPythonのパッケージマネージャーであるpipを使用してインストールできます。 まず、すべての依存関係が満たされていることを確認してください。必須の依存関係には、PyTorchライブラリtorchtorchvisionが含まれます。 これらはEasyOCRと一緒にインストールできます:

EasyOCRのインストール: ターミナルまたはコマンドラインを開き、次のコマンドを入力します:

pip install easyocr
pip install easyocr
SHELL

PyTorchのインストール(EasyOCRに必須): EasyOCRはPyTorch上で動作します。 インストールされていない場合、公式のPyTorchインストールガイドに従い、環境に合わせて自動的にインストールしてください。

インストール後、テキスト抽出タスクにEasyOCRを使用する準備が整います。

EasyOCRを使用した画像のOCR

以下は、画像にOCRを実行するためにEasyOCRを使用する方法を示すサンプルPythonコードです。

import easyocr
import matplotlib.pyplot as plt
import cv2

# Initialize the EasyOCR reader with the English language specified
reader = easyocr.Reader(['en'])  # Specify the languages (e.g., 'en' for English)

# Load the image
image_path = 'sample_image.png'  # Path to the image
image = cv2.imread(image_path)

# Perform OCR on the image
result = reader.readtext(image_path)

# Print detected text and its bounding boxes
for (bbox, text, prob) in result:
    print(f"Detected Text: {text} (Confidence: {prob:.4f})")

# Optionally, display the image with bounding boxes around the detected text
for (bbox, text, prob) in result:
    # Unpack the bounding box
    top_left, top_right, bottom_right, bottom_left = bbox
    top_left = tuple(map(int, top_left))
    bottom_right = tuple(map(int, bottom_right))

    # Draw a rectangle around the text
    cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)

# Convert the image to RGB (since OpenCV loads images in BGR by default)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Display the image with bounding boxes
plt.imshow(image_rgb)
plt.axis('off')
plt.show()
import easyocr
import matplotlib.pyplot as plt
import cv2

# Initialize the EasyOCR reader with the English language specified
reader = easyocr.Reader(['en'])  # Specify the languages (e.g., 'en' for English)

# Load the image
image_path = 'sample_image.png'  # Path to the image
image = cv2.imread(image_path)

# Perform OCR on the image
result = reader.readtext(image_path)

# Print detected text and its bounding boxes
for (bbox, text, prob) in result:
    print(f"Detected Text: {text} (Confidence: {prob:.4f})")

# Optionally, display the image with bounding boxes around the detected text
for (bbox, text, prob) in result:
    # Unpack the bounding box
    top_left, top_right, bottom_right, bottom_left = bbox
    top_left = tuple(map(int, top_left))
    bottom_right = tuple(map(int, bottom_right))

    # Draw a rectangle around the text
    cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)

# Convert the image to RGB (since OpenCV loads images in BGR by default)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Display the image with bounding boxes
plt.imshow(image_rgb)
plt.axis('off')
plt.show()
PYTHON

以下の画像は上記のコードから生成された出力です。

EasyOCRとTesseractの比較(OCR機能比較):図3 - EasyOCR出力

Tesseract

Tesseractは、カスタマイズ可能なハイパーパラメータオプションをサポートする最も人気のあるオープンソースの光学式文字認識エンジンの一つです。 Pythonアプリケーションからpytesseractを使用してアクセスできます。 Tesseractの開発はヒューレット・パッカード社によって始まり、その後Googleによって強化されました。 それは非常に多用途で、100以上の言語で画像およびPDFからテキストを抽出できます。 Pythonラッパーを介してpytesseractとシームレスに連携します。

EasyOCRとTesseractの比較(OCR機能比較):図4 - Tesseract

Tesseractは機械印刷されたテキストを検出・抽出する能力で有名です。 多言語認識機能を提供し、新しいフォントのトレーニングをサポートし、テキストレイアウトの分析を行います。 Tesseractは、ドキュメントのデジタル化、レシートのスキャン、データ入力の自動化、検索可能なPDFの生成で広く使用されています。 PythonでTesseractは、OCR関連タスクに取り組む開発者にとって強力な組み合わせを形成します。

Tesseract OCRの機能

pytesseractの注目すべき機能には以下があります:

  • 多言語サポート: Tesseractは100以上の言語を読み取り、pytesseractはPythonスクリプト内での簡単な多言語OCRサポートを提供します。カスタムフォントや言語にも対応可能です。

  • 画像からテキストへの変換: PytesseractはPNG、JPEG、BMP、GIF、TIFFなどの様々な画像形式からテキストを抽出し、多様なソースにおけるOCRを可能にします。

  • PDFから検索可能なPDFへの変換: TesseractはPDFファイル内のテキストを読み、検索可能な形式に変換し、スキャンされた文書の内容をインデックス化できるようにします。

  • 複雑なテキストレイアウトの認識: 多カラムの文書やテーブルなどの複雑なレイアウトを読み、非標準形式からテキストをより正確に抽出します。

  • カスタム設定: ユーザーはpytesseractを通じてTesseractのカスタム設定パラメータを渡すことができ、特定の画像に合わせたOCRのパフォーマンスを微調整できます。

  • シンプルなAPI: pytesseractのシンプルなAPIにより、少ないコードでPythonプロジェクトにOCRを追加できます。

このライブラリは、OCR精度を向上させるための画像前処理にOpenCV、PIL(Pythonイメージングライブラリー)、NumPyなど他のライブラリともよく連携します。

インストール

Tesseractをインストールした後、pipを使用してpytesseractパッケージをインストールします:

pip install pytesseract
pip install pytesseract
SHELL

EasyOCRとTesseractの比較(OCR機能比較):図5 - pytesseract

pytesseractを使用した画像のOCR

こちらは画像にOCRを行うためにpytesseractを使用するサンプルPythonコードです:

import pytesseract
from PIL import Image

# Set the path to the Tesseract executable
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'

# Open the image and perform OCR
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)

# Print the extracted text
print(text)
import pytesseract
from PIL import Image

# Set the path to the Tesseract executable
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'

# Open the image and perform OCR
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)

# Print the extracted text
print(text)
PYTHON

以下は、上記のコードから生成された出力です。

EasyOCRとTesseractの比較(OCR機能比較):図6 - Tesseract出力

IronOCR

IronOCRは強力な光学式文字認識ライブラリであり、.NET開発者がIronOCRを使用して、画像、PDFやその他のドキュメント形式から効率的にテキストを抽出することができます。 高度なアルゴリズムが提供され、複雑なレイアウトや多言語環境でも高精度を実現し、JPEG、PNG、GIF、TIFF形式をサポートします。 ライブラリは構成可能な設定を提供し、画像解像度やテキストの向きなどのパラメータでOCRエンジンプロセスを微調整できるようにします。

画像前処理の機能により、より良い品質の入力画像が高い認識精度につながり、さらに検索可能なPDF変換として出力ドキュメントが情報検索を容易にします。 ウェブアプリケーションへのシームレスな統合により、IronOCRは信頼性の高いテキスト抽出およびドキュメントのデジタル化解決策を実装したい開発者にとって優れた選択肢となります。

IronOCRの機能

  • 高い精度: 高度なアルゴリズムを使用し、文書の複雑さやフォントの使用い関わらず、高レベルの精度を提供します。

  • 多形式サポート: JPEG、PNG、GIF、TIFF形式の画像に加えてPDFも受け入れ、汎用性のあるアプリケーションでの利用が可能です。

  • 多言語認識: 多言語OCRをサポートし、多様な言語コンテキストでの正確な結果をもたらします。

  • テキストレイアウトの保持: 元の文書レイアウトを維持し、抽出されたテキストがその書式構造を保持するようにします。

  • 構成可能なOCR: 画像解像度、テキストの向きなどの動的なパラメータを提供し、特定の画像のOCR性能を最適化できます。

  • 画像前処理: ノイズ除去、コントラスト調整、リサイズなどの画像改善ツールを含み、OCR精度を向上させます。

  • 検索可能なPDF変換: スキャンされた画像や文書を直接検索可能PDFに変換し、データ管理と情報検索を効率化します。

  • 簡単な統合: .NETアプリケーションへの簡単な統合を実現し、ユーザーがOCR機能を簡単に追加できるようにします。

  • バッチ処理: 大容量のデータを同時に処理できるため、大量のデータの処理に役立ちます。

インストール

IronOCRをインストールするには、Visual StudioでNuGetパッケージマネージャーを開き、新しいプロジェクトを始めて"IronOCR"を検索し、最新バージョンを選択してインストールをクリックします。

EasyOCRとTesseractの比較(OCR機能比較):図7 - フランス語パッケージのインストール

IronOCRを使用したサンプルコード

以下のC#コードは、OCR処理のためにIronOCRを使用する方法を示しています:

using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add languages to the OCR engine
        Ocr.Language = OcrLanguage.English;

        // Define the path to the input image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            var result = Ocr.Read(input);

            // Display the extracted text
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add languages to the OCR engine
        Ocr.Language = OcrLanguage.English;

        // Define the path to the input image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            var result = Ocr.Read(input);

            // Display the extracted text
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
Imports IronOcr

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize IronTesseract engine
		Dim Ocr = New IronTesseract()

		' Add languages to the OCR engine
		Ocr.Language = OcrLanguage.English

		' Define the path to the input image
		Dim inputFile = "path\to\your\image.png"

		' Read the image and perform OCR
		Using input = New OcrInput(inputFile)
			Dim result = Ocr.Read(input)

			' Display the extracted text
			Console.WriteLine("Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

比較評価

高精度

IronOCRは、複雑なレイアウトやノイズの多い画像、低解像度のテキストに対して、TesseractやEasyOCRと比較してその精度が際立っています。 ノイズ除去やコントラスト調整などの内蔵画像前処理ツールが実質的な応用における高精度の達成を助けます。

多形式とレイアウト保持

IronOCRは、様々な画像形式、PDFファイル、多カラムレイアウトを処理し、元の文書の構造と書式を保持する能力に優れています。 レイアウト保持が重要なプロジェクトに非常に適しています。

追加のツールやライブラリに頼ることなく、直接画像やスキャンされた文書を完全に検索可能なPDFに変換できる能力は、TesseractやEasyOCRに対してアドバンテージとなります。

IronOCRが提供する高度な前処理

低品質の画像でもIronOCRの高度な前処理機能を使用することで高いOCR精度が得られ、OpenCVなどの追加ライブラリを必要としないため、テキスト抽出における包括的なソリューションとなっています。

スケーラビリティとパフォーマンス

高速でリソース効率の良いOCRに最適化されたIronOCRは、大規模な文書処理タスクに対応するスケーラビリティをサポートし、エンタープライズアプリケーションにおいて優先されます。

サポートとアップデート

商業的サポートのあるIronOCRは、定期的な更新、バグ修正、専門的なサポートを受けることで、長期的な信頼性と最新のOCRの進歩を提供し、TesseractやEasyOCRのようなオープンソースオプションに対して優れた利点を持っています。

結論

主要なOCRライブラリの領域において、IronOCRはその優れた精度、統合の容易さ、前処理能力、そして検索可能なPDFの作成により際立っています。 複雑なレイアウトやノイズの多い画像を巧みに処理し、ドキュメント構造を保持し、複数言語をデフォルトでサポートします。 これらの機能は、TesseractやEasyOCRのようなオープンソースの解決策よりも優れていると評価されます。

シームレスに.NETとPython両方に統合できるIronOCRは、様々なプロジェクトで高品質のOCRを求める開発者に包括的なパッケージを提供します。 高い性能、スケーラビリティ、商業的サポートを誇るIronOCRは、広範な小規模および大規模な文書のデジタル化イニシアチブに非常に適しており、信頼できる効率的なテキスト認識を提供します。

IronOCRとその機能について詳細を学ぶには、ドキュメンテーションページをご覧ください。 Iron Software製品のさらなる詳細については、ライブラリスイートページを参照してください。

Kannaopat Udonpant
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、Kannapatは北海道大学で環境資源の博士号を修了しました。博士号を追求する間に、彼はバイオプロダクションエンジニアリング学科の一部である車両ロボティクスラボラトリーのメンバーになりました。2022年には、C#のスキルを活用してIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。Kannapatは、IronPDFの多くのコードを執筆している開発者から直接学んでいるため、この仕事を大切にしています。同僚から学びながら、Iron Softwareでの働く社会的側面も楽しんでいます。コードやドキュメントを書いていない時は、KannapatはPS5でゲームをしたり、『The Last of Us』を再視聴したりしていることが多いです。