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

Easyocr対Tesseract (OCR機能の比較)

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

OCRは文書をスキャンし、文字や数字、記号などの認識し、それを機械判読可能な形式に翻訳します。 その用途には、書籍のデジタル化、フォーム処理、文書ワークフローの自動化、目の不自由な人々のアクセス向上などがあります。 深層学習とAIの発展により、OCRエンジンは複雑な形式や多言語文書、低品質の画像の認識に非常に正確になりました。

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

EasyOCR

EasyOCRは、画像からのテキスト抽出を簡単かつ効果的にすることを目的としたオープンソースのPythonライブラリです。 ディープラーニング技術を使用し、ラテン語、中国語、アラビア語を含む80以上の言語をサポートしています。 そのAPIは簡単で、誰でもアプリケーションにOCR予測機能を簡単に統合できるため、簡単な文書のデジタル化、ナンバープレート認識、あるいは写真からのテキスト抽出が可能です。

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画像

以下は、EasyOCRを使用して画像でOCRを実行する方法を示す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 vs Tesseract  (OCR Features Comparison): 図3 - EasyOCR Output

Tesseract

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

EasyOCR vs Tesseract  (OCR Features Comparison): 図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 Imaging Library)、NumPyなどの他のライブラリとよく連携します。

インストール

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

pip install pytesseract
pip install pytesseract
SHELL

EasyOCR vs Tesseract  (OCR Features Comparison): 図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 vs Tesseract  (OCR Features Comparison): 図6 - Tesseract Output

IronOCRの概要

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

画像前処理の機能により、認識精度が向上し、検索可能なPDFとしての出力文書に情報を簡単に検索できるようにします。 そのウェブアプリケーションへのシームレスな統合により、信頼できるテキスト抽出と文書デジタル化ソリューションをさまざまな分野で実装を目指している開発者にとっての強力な選択になります。

IronOCRの特徴

  • 高精度: 先進的なアルゴリズムを使用して、文書の複雑さやフォントの使用に関係なく高い精度でテキスト認識を提供します。

  • 複数フォーマットサポート: アプリケーション全体での汎用性のために、画像フォーマット(JPEG、PNG、GIF、TIFF)およびPDFを受け入れます。

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

  • テキストレイアウトの保持: オリジナルの文書レイアウトを保持し、抽出されたテキストがそのフォーマット構造を維持します。

  • 設定可能なOCR: 画像解像度、テキストの向きなどの設定可能なパラメータを提供し、特定の画像でのOCRパフォーマンスを最適化できます。

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

  • 検索可能なPDF変換: 画像や文書を直接検索可能なPDFに変換し、効率的なデータ管理と検索を可能にします。

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

  • バッチ処理: 大量のデータを処理できるように複数の画像や文書を同時に処理します。

インストール

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

EasyOCR vs Tesseract  (OCR Features Comparison): 図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の概要 Provides Advanced Preprocessing

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

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

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

サポートとアップデート

商業サポートにより、IronOCRは定期的な更新、バグ修正、専用のサポートを受け、TesseractやEasyOCRのようなオープンソースオプションとは異なる信頼性を長期間にわたって提供し、OCRの最新の進展を提供し続けます。

結論

主要な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』を再視聴したりしていることが多いです。