DUICUO

完全に無料のオープンソースOCRプロジェクト12選

みなさんこんにちは、エチャです。

今日は、私たちの日常生活に深く関わり、頻繁に使われている便利なツールをご紹介したいと思います。物理世界とデジタル世界の間で情報を変換することは、デジタル開発における重要な技術的側面です。

技術用語では、光学式文字認識 (OCR) といいます。

物体検出に基づくOCR認識技術

OCRとは、画像ファイルからテキストデータを分析・認識し、テキストとレイアウト情報を取得するプロセスを指します。言い換えれば、画像内のテキストを認識し、それをテキストとして返すことです。この説明だけでは分かりにくいかもしれませんので、より明確にするために、OCRの適用シナリオについて説明しましょう。

OCR の適用シナリオは次のとおりです。

カードと文書の認識: 中国本土、香港、マカオ、台湾の ID カード、旅行許可証、パスポートの認識、カード認識、車両認識: 運転免許証と車両登録証明書の認識、営業許可証の認識、企業文書の認識。

テキスト情報構造化ビデオ認識: 字幕認識とテキスト検出、表;

文書認識: 付加価値税請求書認識、電子請求書認識、銀行小切手認識、銀行為替手形認識、銀行手形認識、物流および速達配送認識。

その他の認識方法には、QR コード認識、1D バーコード認識、ナンバープレート認識、数式認識、物理および化学記号認識、音楽記号認識、エンジニアリング図面認識、フローチャート認識、履歴文書認識、手書き入力認識などがあります。

上記以外にも、自然シーンでのテキスト認識、メニュー認識、バナーの検出と認識、スタンプの検出と認識、広告テキストや画像の認識など、レビューに関連したビジネスアプリケーションもあります。

シンプルなOCRアプリケーションシナリオ

テクノロジーの発展に伴い、OCRアプリケーションはあらゆる場所に普及しています。顔認識、車両認識、人物属性認識、カード認識、交通標識認識といった従来の画像認識機能は、現代のデジタルワークとライフにおいて極めて重要な役割を果たしています。業界トップクラス企業が直接呼び出し可能なAPIやSDKを提供している一方で、これらの企業は、カスタマイズされたシナリオへの汎用性の低さ、高価格、ブラックボックス制御の難しさ、技術的な障壁の確立の難しさなど、多くの課題に直面しています。

9つのシーンモデルの概略図

本日は、人物、車両、OCRなど、9つの典型的な認識シナリオを網羅した、完全にオープンソースで無料のOCRプロジェクトを12個ご紹介します。これらのプロジェクトは、CPUで3ミリ秒という高速認識を実現し、わずか1行のコードで反復学習が可能です。お役に立てれば幸いです。いくつかの主要なオープンソースフレームワークを活用することで、プロジェクトに迅速に適用し、目標を達成することができます。

全文概要

  1. Tesseract.js は、TesseractOCR をベースにした Web ブラウザー OCR ソフトウェアです。
  2. OCRopus は、Google が開発した OCR 関連ツールのコレクションです。
  3. Tesseract OCR は、古典的なオープンソース OCR エンジンです。
  4. Ocrad - 主に印刷されたテキストを認識することで知られる軽量の OCR ソリューション。
  5. GOCR は、GNU General Public License に基づいて開発されたオープンソースの OCR エンジンです。
  6. Ocrad.js は、Ocrad をベースにしたブラウザベースの OCR ソフトウェアです。
  7. Capture2Text は、コマンドライン ベースの Windows OCR ソフトウェアです。
  8. GImage Reader - 複数の言語のテキストとさまざまな画像ファイル形式を認識できます。
  9. OCRmyPDF は、PDF 専用に設計された OCR 認識ソフトウェアです。
  10. PaddleClas は、PaddlePaddle が業界および学術界向けに用意した画像認識および画像分類タスク用のツールキットです。
  11. Kraken は Python で開発された OCR ソフトウェアで、主に非ラテン文字の認識に使用されます。
  12. EasyOCR - 機械学習 (CRNN) に基づく OCR 機能を実装します。

Tesseract.js は、TesseractOCR をベースにした Web ブラウザー OCR ソフトウェアです。

Github: https://github.com/naptha/tesseract.js#tesseractjs

Tesseract.js 公式サイト

Tesseract.jsは、Tesseract OCRをベースにしたWebブラウザOCRソフトウェアです。ブラウザで使用でき、非常に使いやすいです。Tesseract OCRと同様に、中国語を含む複数の言語をサポートしています。

Tesseract.js の Web サイトによると、このツールは 100 以上の言語をサポートし、自動テキスト位置特定機能とスクリプト検出機能を備え、段落、単語、文字境界ボックスを読み取るためのシンプルなインターフェースを備えています。

Tesseract.js デモのスクリーンショット

Tesseract.js ケースデモンストレーション

OCRopus は、Google が開発した OCR 関連ツールのコレクションです。

Github: https://github.com/ocropus

OCRopusは、Googleが開発したOCR関連ツールのコレクションで、Tesseract OCRエンジンの機能を拡張します。レイアウト分析、テキスト認識、サンプルデータ生成などの高度な機能を提供します。

さらに、OCRopusは入力画像を指定してコマンドラインから実行することもできます。認識したテキストは標準出力に直接出力されるか、hOCR(HTMLベース)コードとしてファイルに書き込まれ、検索可能なPDFに変換されます。より正確な制御を行うには、コマンドラインでオプションを指定して特定の操作を実行することもできます。

利点:

  • レイアウト分析: OCRopus はレイアウト分析の精度が非常に高く、複雑なレイアウトや複数列構造の文書の認識に最適です。
  • テキスト認識精度: OCRopus は、Tesseract の高精度 OCR エンジンやその他のコンポーネントを活用して認識精度を向上させます。
  • カスタマイズ性: OCRopus は、カスタム OCR モデルをトレーニングするためのサンプル データを生成できるため、プロフェッショナル アプリケーションでより優れたカスタマイズ性と精度を実現できます。

欠点

  • 学習曲線: スタンドアロンの OCR エンジンと比較すると、OCRopus はツールとコンポーネントの範囲が広いため、学習曲線が急峻です。
  • リソース集約型: OCRopus の高度な機能には、より多くのコンピューティング リソースが必要になる可能性があり、コストが高くなる場合があります。また、プロジェクトの処理時間要件も考慮する必要があります。

Tesseract OCR は、古典的なオープンソース OCR エンジンです。

Github: https://github.com/tesseract-ocr/tesseract

Tesseract OCR Github公式サイト

Tesseractは、Hewlett-Packard社によって開発され、現在はGoogle社によってメンテナンスされている、定番のオープンソースOCRエンジンです。その精度と汎用性で定評のあるTesseractは、スキャンした文書、画像、手書きテキストからデータを抽出し、機械が理解できるテキストに変換します。100以上の言語をサポートし、複数のオペレーティングシステムと互換性があり、ユーザーフレンドリーなコマンドラインインターフェースを備えています。

利点:

  • 精度: Tesseract は、特に印刷されたテキストやスキャンされたドキュメントに対して非常に高い OCR 精度を提供します。
  • 言語サポート: Tesseract は幅広い言語をサポートしており、一部の特殊言語を含む複数の言語のテキストを認識できるため、多言語アプリケーションに最適です。
  • 継続的な改善: Tesseract のオープンソース コミュニティは非常に活発で、プロジェクトをタイムリーに更新およびアップグレードし、バグを修正し、ユーザーから報告されたパフォーマンス要件を改善できます。

欠点:

  • 複雑なレイアウトのドキュメント認識: Tesseract は、シンプルなレイアウトのドキュメントでは非常に優れたパフォーマンスを発揮しますが、より複雑なレイアウトのドキュメントでは追加の前処理または後処理の手順が必要になります。
  • 手書き認識の精度: Tesseract は機械で印刷されたテキストの認識では優れたパフォーマンスを発揮しますが、手書きのテキストではパフォーマンスがそれほど良くなく、専用の手書き認識ツールほど正確でない場合があります。

Ocrad - 主に印刷されたテキストを認識することで知られる軽量の OCR ソリューション。

リンク: https://www.gnu.org/software/ocrad/

オクラド公式サイト

Ocradは、そのシンプルさと認識速度で知られています。軽量なOCRソリューションを提供し、主に印刷テキストの認識に特化しています。テキスト認識と抽出のスピードと使いやすさに重点を置き、シンプルで効率的なOCRソリューションを提供することを目指しています。

利点

  • 使いやすさと認識効率:Ocradのシンプルな設計と軽量設計は、使いやすさと認識効率の向上に貢献しています。特に、高速でシンプルなOCRソリューションを求めるニーズに最適です。
  • 印刷テキストの認識: Ocrad はスキャンした画像から印刷テキストを認識する能力に優れており、明確で適切にフォーマットされた印刷文書から信頼性の高い結果を抽出できます。

欠点

  • 高度な機能の欠如: Ocrad は基本的な OCR タスクに重点を置いており、レイアウト分析や手書き認識などの高度な機能が不足している可能性があります。
  • 複雑なテキストと低品質の画像の精度: 複雑なテキスト構造や低品質のスキャン画像を処理する場合、Ocrad の精度が低下する可能性があります。

GOCR は、GNU General Public License に基づいて開発されたオープンソースの OCR エンジンです。

リンク: https://jocr.sourceforge.net/

GOCR 公式ウェブサイト

GOCRは、GNU General Public Licenseに基づいて開発されたオープンソースのOCRエンジンです。様々な画像ファイル形式のテキストコンテンツを認識でき、複数の言語とオペレーティングシステムをサポートしています。

GOCR の精度は他の OCR エンジンを上回ることはないかもしれませんが、そのシンプルさと使いやすさが GOCR の利点です。

利点

  • シンプルさ:GOCRの最大の利点はそのシンプルさにあります。このソフトウェアはユーザーフレンドリーなインターフェースを備えており、複雑な設定や複雑な設定を必要とせず、シンプルなOCRソリューションを求めるユーザーに最適です。
  • 多言語サポート: GOCR は複数の言語をサポートしており、ユーザーは異なる言語のコンテンツを含む画像からテキストを抽出できます。

欠点

  • 精度: GOCR は基本的な OCR 機能を提供しますが、その精度は他のより高度な OCR エンジンに匹敵しない可能性があります。
  • 高度な機能:GOCRは単純なOCRタスクに重点を置いており、レイアウト分析や専門的な認識アルゴリズムといった高度な機能が不足している可能性があります。そのため、高度な機能が必要な場合は、このツールはあまり適していません。

Ocrad.js は、Ocrad をベースにしたブラウザベースの OCR ソフトウェアです。

リンク: https://antimatter15.com/ocrad.js/demo.html

Ocrad.js 公式サイト

Ocrad.jsは、Ocradをベースに構築されたブラウザベースのOCRソフトウェアです。JavaScriptで使用されます。サポートされている画像形式は、JPEG、PNG、GIF、BMP、SVG、NetBPMなどです。

OCRADは非常にシンプルで使いやすく、関数を呼び出すだけで`img`タグを認識できます。認識精度はTesseract.jsに劣りますが、モデルファイルのサイズがTesseractの30分の1以上小さいという利点があります。

Capture2Text は、コマンドライン ベースの Windows OCR ソフトウェアです。

リンク: https://capture2text.sourceforge.net/

Capture2Text 公式サイト

Capture2Textは、コマンドラインベースのWindows OCRソフトウェアです。日本語を含む複数の言語に対応しており、横書き文字と縦書き文字の両方を認識できます。必要に応じてWindowsコマンドラインからOCRコマンドを呼び出すことができ、認識されたテキストはクリップボードに保存されます。

GImage Reader - 複数の言語のテキストとさまざまな画像ファイル形式を認識できます。

Github: https://github.com/manisandro/gImageReader

GImage Reader 公式サイト

GImage Readerは、複数の言語と様々な画像ファイル形式のテキストを認識できるツールです。スキャンした文書、スクリーンショット、写真などからテキストを抽出するのに最適です。また、シンプルで直感的なユーザーインターフェースを備えており、画像を素早く読み込み、テキスト結果を取得できます。

利点

  • ユーザーフレンドリーなインターフェース:GImage Readerのインターフェースは非常に直感的で使いやすく、ユーザーは簡単にアクセスして画像を読み込み、結果を得ることができます。
  • 多言語サポート: GImage Reader は複数の言語をサポートしており、異なる言語のコンテンツを含む画像からテキストを抽出できます。

欠点

  • 高度な機能の欠如: GImage Reader は主に基本的な OCR タスクに重点を置いており、より高度なコンテンツ認識には適していません。
  • 精度とパフォーマンス: GImage Reader は基本的な OCR タスクに使用できますが、その精度とパフォーマンスは画像の品質とテキストの複雑さによって影響を受ける可能性があります。

OCRmyPDF は、PDF 専用に設計された OCR 認識ソフトウェアです。

Github: https://github.com/ocrmypdf/OCRmyPDF

OCRmyPDF 公式ウェブサイト

OCRmyPDFは、PDF専用のOCRソフトウェアです。認識したテキストを透明テキストとしてPDFに追加できるため、PDF内のテキスト検索が可能になります。

テキスト情報が少ないPDFでも検索が可能になり、利便性が向上します。テキスト認識にはTesseract OCRエンジンを採用しているため、中国語にも対応しています。

PaddleClas は、PaddlePaddle が業界および学術界向けに用意した画像認識および画像分類タスク用のツールキットです。

Github: https://github.com/PaddlePaddle/PaddleClas

PaddleClas は、PaddlePaddle が業界および学術界向けに作成した画像認識および分類タスク用のツールキットであり、ユーザーがより優れた視覚モデルをトレーニングし、アプリケーションを実装するのに役立ちます。

特性

PaddleClasは、様々な最先端の画像分類・認識アルゴリズムをサポートし、PP-HGNet、PP-LCNetv2、PP-LCNet、SSLD半教師あり知識蒸留スキームといった業界標準のバックボーンネットワークをリリースしています。これらを基に、PULC超軽量画像分類スキームとPP-ShiTu画像認識システムを開発しました。

Kraken は Python で開発された OCR ソフトウェアで、主に非ラテン文字の認識に使用されます。

Github: https://github.com/mittagessen/kraken

クラーケン公式サイト

KrakenはPythonで開発されたOCRソフトウェアで、主に非ラテン文字の認識に使用されます。アラビア語などの右から左に記述する言語だけでなく、日本語などの上から下へ記述する言語もサポートしています。OCRはコマンドラインから実行でき、PDF、JPEG、TIFFなどの形式のファイルを認識できます。

その機能は次のとおりです:

  • カスタムトレーニングされたレイアウト分析と文字認識をサポートします。
  • 右から左、上から下への認識をサポートします。
  • ALTO、PageXML、abbyXML、hOCR 形式での出力を提供します。
  • 単語の境界ボックスを認識し、文字のクリッピングをサポートします。
  • マルチスクリプト認識サポート
  • モデルファイルの公開リポジトリ
  • アニメーションGIF認識ネットワークアーキテクチャ

EasyOCR - 機械学習 (CRNN) に基づく OCR 機能を実装します。

Github: https://github.com/JaidedAI/EasyOCR

EasyOCRは、機械学習(CRNN)に基づくOCR機能を実装しています。簡体字中国語と繁体字中国語を含む80以上の言語のテキストを認識できます。Pythonで開発されているため、Pythonで簡単に使用できます。例えば:

中国語の文字を含む画像を識別します。

 import easyocr reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory reader.readtext('chinese.jpg', detail = 0)

認識結果は次のとおりです。

 ['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']

やっと