C# (シーシャープ)で画像からテキストを読み取る

This article was translated from English: Does it need improvement?
Translated
View the article in English

このチュートリアルでは、C#(シーシャープ)やその他の.NET言語で画像をテキストに変換する方法を学びます。

.NETアプリケーションで画像からテキストを読み取る

IronOcr.IronTesseract`クラスを使用して画像内のテキストを認識し、.NETで画像からテキストを読み取る際に精度と速度の面で最高のパフォーマンスを得るために_Iron Tesseract OCR_を使用する方法のニュアンスを見ていきます。

画像からテキストへ」を実現するために、IronOCR (アイアンOCR)ライブラリをVisual Studioプロジェクトにインストールします。

そのために IronOCR DLL または NuGet .

Install-Package IronOcr

なぜIronOCR(アイアンOCR)なのか?

私たちがテッセラクトの管理にIronOCR(アイアンOCR)を使っているのは、それがユニークだからです:

  • 純粋な.NETでそのまま動作します
  • Tesseractがマシンにインストールされている必要はない。
  • 最新エンジンに対応 **テッセラクト5 ( テッセラクト4と同様、3)
  • .NET Framework 4.5 +、.NET Standard 2 +、.NET Core 2、3、5など、すべての.NETプロジェクトで使用できます。!
  • 従来のテッセラクトよりも精度とスピードが向上している。
  • Xamarin、Mono、Azure、Dockerをサポート
  • NuGetパッケージを使用した複雑なTesseract辞書システムの管理
  • PDFS、MultiFrame Tiff、およびすべての主要な画像フォーマットを設定なしでサポート

  • テッセラクトから最良の結果を得るために、低品質で歪んだスキャンを修正することができる。

    OCR 用 C# NuGet ライブラリ

    でインストール NuGet

    Install-Package IronOcr
    または
    Java PDF JAR(ジャバPDF JAR)

    ダウンロード DLL (ディーエルエル)

    DLLをダウンロード

    プロジェクトに手動でインストールする

    OCR 用 C# NuGet ライブラリ

    でインストール NuGet

    Install-Package IronOcr
    または
    Java PDF JAR(ジャバPDF JAR)

    ダウンロード DLL (ディーエルエル)

    DLLをダウンロード

    プロジェクトに手動でインストールする

    今日からプロジェクトでIronPDFを使い始めましょう。無料のトライアルをお試しください。

    最初のステップ:
    green arrow pointer

    チェックアウト IronOCR オン Nuget 迅速なインストールと展開のために。8百万以上のダウンロード数により、OCRをC#で変革しています。

    OCR 用 C# NuGet ライブラリ nuget.org/packages/IronOcr/
    Install-Package IronOcr

    インストールを検討してください IronOCR DLL 直接。ダウンロードして、プロジェクトまたはGACの形式で手動でインストールしてください。 IronOcr.zip

    プロジェクトに手動でインストールする

    DLLをダウンロード

C#(シーシャープ)でテッセラクトを使用;

この単純な例では アイアンOCR(アイアンテッセラクト クラスは、画像からテキストを読み取り、その値を自動的に文字列として返します。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-1.cs
// PM> Install-Package IronOcr
using IronOcr;

OcrResult result = new IronTesseract().Read(@"img\Screenshot.png");
Console.WriteLine(result.Text);
' PM> Install-Package IronOcr
Imports IronOcr

Private result As OcrResult = (New IronTesseract()).Read("img\Screenshot.png")
Console.WriteLine(result.Text)
VB   C#

その結果、次のような文章で100%の精度が得られた:

IronOCR Simple Example

In this simple example we will test the accuracy of our C# OCR library to read text from a PNG
Image. This is a very basic test, but things will get more complicated as the tutorial continues.

The quick brown fox jumps over the lazy dog

画像の位置合わせ、品質、解像度をスキャンし、その特性を調べ、OCRエンジンを最適化し、訓練された人工知能ネットワークを使って人間が読むようにテキストを読み取るのだ。

OCRはコンピューターにとって簡単なプロセスではなく、読み取り速度は人間のそれに近いかもしれない。 つまり、OCRは瞬時に処理できるものではない。 しかし、この場合は100%正確だ。

C# OCRアプリケーションの結果の精度

C#(シーシャープ)のためのIronOCR(アイアンOCR)テッセラクトの高度な使用;

現実世界のほとんどのユースケースでは、開発者は自分のプロジェクトで可能な限り最高のパフォーマンスを求めるだろう。 このような場合は、次のような使い方をお勧めします。 OCR入力 そして アイアンテッセラクト クラスは IronOcr 名前空間内にある。

OcrInputは、以下のようなOCRジョブの特定の特性を設定する機能を提供する:

  • JPEG、TIFF、GIF、BMP、PNGなど、ほとんどすべての種類の画像を扱うことができます。
  • PDF文書の全体または一部を取り込む
  • コントラスト、解像度、サイズの向上
  • 回転、スキャンノイズ、デジタルノイズ、傾き、ネガ画像の補正

    **アイアン・テッセラクト

  • 何百ものパッケージ化された言語と言語バリエーションから選ぶ
  • Tesseract 5、4、または3のOCRエンジンを "そのまま "使用可能
  • スクリーンショットか、スニペットか、文書全体か、文書タイプを指定する。
  • バーコードの読み取り

  • 結果の出力先検索可能なPDF、Hocr HTML、DOM、文字列

例題OcrInput + IronTesseractで始める

難しいように思われるかもしれませんが、以下の例では、IronOCR (アイアンOCR)に入力するほとんどの画像に対応するデフォルト設定をご覧いただけます。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-2.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

中程度の画質のスキャンでも100%の精度で使用できる。

TIFFからC# OCRスキャンの例

お分かりのように、本文を読むと (オプションでバーコード) TIFFのようなスキャンされた画像からの変換は比較的簡単でした。

このOCR作業は100%の精度をもたらす。

OCRは実世界の文書に関しては完璧な科学ではないが、IronTesseractはそれに匹敵するほど優れている。

また、IronOCR (アイアンOCR)はTIFFのような複数ページの文書も自動的に読み込むことができます。 PDF文書からテキストを抽出 自動的に

例低品質スキャン


デジタルノイズを含む低解像度スキャンにおけるC# OCR

今度は、同じページを低DPIで、歪みとデジタルノイズが多く、原紙にダメージがある、もっと低画質でスキャンしてみよう。

IronOCRがTesseractのような他のOCRライブラリに対して真に輝くのはこの点です。 OCRの精度を100%にするためにデジタルで作成された非現実的な「完璧な」テストケースではなく、現実のスキャン画像でOCRを行う。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-3.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageindices);
input.Deskew(); // removes rotation and perspective
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.LowQuality.tiff", pageindices)
input.Deskew() ' removes rotation and perspective
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

Input.Deskewを追加しない場合()画像をまっすぐにすると、52.5%の精度が得られる。 十分ではない。

Input.Deskewの追加()99.8%**の精度を達成した。 ほぼ 高画質スキャンのOCRに匹敵する正確さ。

画像フィルターは実行に少し時間がかかるかもしれないが、OCR処理時間を短縮することもできる。開発者が入力文書を知るには、絶妙なバランスが必要だ。

確信が持てないのであれば:

  • `Input.Deskew()は安全で、非常に成功したフィルターだ。
  • 次にInput.DeNoiseを試す。()かなりのデジタルノイズを修正する。

パフォーマンス・チューニング

OCRジョブのスピードにおいて最も重要な要素は、実は入力画像の品質である。 背景ノイズが少なく、dpiが高いほど、完璧な目標dpiは約200dpiで、最も速く正確なOCR結果が得られる。

しかし、IronOCR(アイアンOCR)は不完全な文書を修正することに優れているので、これは必要ありません。 (しかし、これは時間がかかり、OCRジョブがより多くのCPUサイクルを使用することになります。).

可能であれば、TIFFやPNGのようなデジタルノイズの少ない入力画像形式を選択すると、より高速な結果が得られます。 ロッシー JPEGなどの画像フォーマット。

イメージフィルター

次のようなイメージフィルターを使用すると、パフォーマンスを向上させることができます:

  • OcrInput.Rotate(オーシーアール入力.ローテート)( double degrees (度)) 画像を時計回りに何度回転させるかを指定します。反時計回りの場合は負の数を使用します。
  • OcrInput.Binarize()** - この画像フィルターは、すべてのピクセルを中間色なしで黒または白に変換します。 OCRのパフォーマンスをテキストと背景のコントラストが非常に低い場合に改善する可能性があります。
  • OcrInput.ToGrayScale()** - この画像フィルターは、すべてのピクセルをグレースケールの階調に変換します。 OCRの精度を向上させる可能性は低いが、速度の向上は期待できる。
  • OcrInput.Contrast(OCR入力コントラスト)()** - コントラストを自動的に向上させます。 このフィルターは、低コントラストのスキャンにおいて、OCRの速度と精度を向上させることがよくあります。
  • OcrInput.DeNoise - ノイズ除去() デジタルノイズを除去する。このフィルターはノイズが予想される場合にのみ使用してください。
  • OcrInput.Invert()** - すべての色を反転します。 例えば、白が黒になります:黒が白になります。
  • OcrInput.Dilate(膨張)() - 高度な形態素解析。 _Dilation_は、画像内のオブジェクトの境界にピクセルを追加します。 「Erode」の反対語
  • OcrInput.Erodeエロージョン()** - 高度な形態素解析。 Erosion_オブジェクトの境界上のピクセルを取り除くDilateの反対語

  • OcrInput.Deskew()画像を正しい向きにし、直交するように回転させます。 これは、OCRに非常に役立ちます。なぜなら、Tesseractの傾きの許容範囲は5度程度と低いためです。

    • OcrInput.DeepCleanBackgroundNoise

オリジナルの英語のコンテンツが技術的かつブランド用語を含む内容のため、日本語での適切な翻訳に際しては、ブランド用語は英語のままで取り扱います。

"OcrInput.DeepCleanBackgroundNoise"()** - 大きな背景ノイズの除去。 このフィルタは、きれいな文書のOCR精度を低下させる危険性があり、CPUコストが非常に高いため、極端な文書背景ノイズがわかっている場合にのみ使用してください。

  • OcrInput.EnhanceResolution - 低品質な画像の解像度を強化します。 なぜなら、_OcrInput.MinimumDPI_と_OcrInput.TargetDPI_が自動的に低解像度の入力を捕捉し、解決するからである。

スピードのためのパフォーマンス・チューニング

アイアン・テッセラクト(Iron Tesseract)を使うことで、より高画質なスキャンのOCRを高速化することができる。

スピードを最適化するのであれば、この位置からスタートし、完璧なバランスが見つかるまで機能を戻していくかもしれない。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-4.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

// Configure for speed
ocr.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
ocr.Language = OcrLanguage.EnglishFast;

using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()

' Configure for speed
ocr.Configuration.BlackListCharacters = "~`$#^*_}{][|\"
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto
ocr.Language = OcrLanguage.EnglishFast

Using input As New OcrInput()
	Dim pageindices = New Integer() { 1, 2 }
	input.LoadImageFrames("img\Potter.tiff", pageindices)
	
	Dim result As OcrResult = ocr.Read(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

この結果は、ベースライン100%と比較して99.8%の精度だが、35%速い。

画像の切り抜き領域の読み取り

以下のコードサンプルでわかるように、(アイアン)のTesseract OCRのフォークは、画像の特定の領域を読み取ることに長けている。

を使用することがある。 System.Drawing.Rectangle (システム・ドローイング・レクタングル) で、読み取る画像の正確な領域をピクセル単位で指定する。

これは、定型化されたフォームに記入され、特定の領域だけがケースごとに変わるテキストを扱う場合に、非常に便利である。

例ページの領域をスキャンする

を使うことができる。 System.Drawing.Rectangle (システム・ドローイング・レクタングル) で、ドキュメントを読み込む領域を指定する。 測定単位は常にピクセルです。

これは、速度の向上を提供し、不必要なテキストの読み取りを回避することができることがわかります。 この例では、標準化された文書の中央領域から生徒の名前を読み取ります。

TIFFからC# OCRスキャンの例 どのコンテンツを日本語に翻訳しますか?提供いただいた詳細な内容をお知らせいただければ、迅速かつ正確に翻訳いたします。 TIFFからC# OCRスキャンの例


:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-5.cs
using IronOcr;
using IronSoftware.Drawing;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// a 41% improvement on speed
Rectangle contentArea = new Rectangle(x: 215, y: 1250, height: 280, width: 1335);
input.LoadImage("img/ComSci.png", contentArea);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports IronSoftware.Drawing

Private ocr As New IronTesseract()
Private OcrInput As using
' a 41% improvement on speed
Private contentArea As New Rectangle(x:= 215, y:= 1250, height:= 280, width:= 1335)
input.LoadImage("img/ComSci.png", contentArea)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

これにより41%の速度増加が実現し、具体的に指定することが可能になります。 .NET OCRは、請求書、領収書、小切手、フォーム、経費請求書など、ドキュメントが類似しており、一貫性がある場合に非常に便利です。

コンテンツ領域 (OCR クロッピング) PDFを読み取る際にも対応しています。

国際的な言語

アイアンOCRは125の国際言語をサポートしており、DLLとして配布されている言語パックをこのウェブサイトからダウンロードすることができます。

NuGetを参照してインストールすることができます。 ("IronOCR (アイアンOCR).Languages "を検索する。) または OCR言語パックのページ.

対応言語は以下の通り:

  • アフリカーンス語
  • アムハラ語 別名:አማኛ
  • アラビア語 別名 العربية
  • アラビア文字 別名 العربية
  • アルメニアアルファベット 別名:Հայերեն
  • アッサム語 ⦿ またの名を ⦿
  • アゼルバイジャン語 別名:azərbaycan dili
  • アゼルバイジャン語キリル文字 別名:azərbaycan dili
  • ベラルーシ語 別名 беларуская мова
  • ベンガル語 別名:バングラ語,탕탕লা
  • ベンガル語アルファベット 別名:バングラ語、াল
  • チベット語 別名:チベット標準語、チベット語、中央ཡག་
  • ボスニア語 _別名:bosanski jezik
  • ブルトン人_またの名をブレゾネグ_。
  • ブルガリア語 別名:български език
  • CanadianAboriginalAlphabet _別名:カナディアン・ファースト・ネーションズ、インディヘナ・カナディアン、ネイティブ・カナディアン、イヌイット_カナダ先住民
  • カタロニア語 _カタラ、バレンシアとしても知られる
  • セブアノ語_ビサヤ語、ビニサヤ語としても知られる。
  • チェコ語 _čeština, český jazykとしても知られる。
  • CherokeeAlphabet Also known as ᏣijĹĶᏬIJᎯᏍķ, Tsalagi Gawonihisdi

    • 中国語簡体字_別名:中文 (申し訳ありませんが、「Zhōngwén」という言葉は中国語を意味します。それでも、日本語への翻訳を希望されているなら、以下の内容を日本語に翻訳いたします:

Bandwidth A Typical PDF Document is 1MB. As web applications often generate large quantities of PDFs it’s important to consider bandwidth consumption.

IronPDF can compress PDF documents to reduce their file size, ensuring that the creation of PDFs will not significantly affect your network’s performance.

1.Original PDF: 1MB 2.Compressed PDF: 300KB

By using IronPDF’s compression options, you can save up to 70% of bandwidth for every PDF generated.


帯域幅 通常のPDF文書は1MBです。Webアプリケーションはしばしば大量のPDFを生成するため、帯域幅の消費を考慮することが重要です。

IronPDFは、PDF文書のファイルサイズを縮小するために圧縮することができ、PDFの作成がネットワークのパフォーマンスに大きな影響を与えないようにします。

  1. オリジナルPDF:1MB
  2. 圧縮されたPDF:300KB

IronPDFの圧縮オプションを使用することにより、生成されるPDFごとに最大70%の帯域幅を節約できます。)汉语, 漢語_。

  • 中国語SimplifiedVertical _別名:中文 (申し訳ありませんが、「Zhōngwén」という言葉は中国語を意味します。それでも、日本語への翻訳を希望されているなら、以下の内容を日本語に翻訳いたします:

Bandwidth A Typical PDF Document is 1MB. As web applications often generate large quantities of PDFs it’s important to consider bandwidth consumption.

IronPDF can compress PDF documents to reduce their file size, ensuring that the creation of PDFs will not significantly affect your network’s performance.

1.Original PDF: 1MB 2.Compressed PDF: 300KB

By using IronPDF’s compression options, you can save up to 70% of bandwidth for every PDF generated.


帯域幅 通常のPDF文書は1MBです。Webアプリケーションはしばしば大量のPDFを生成するため、帯域幅の消費を考慮することが重要です。

IronPDFは、PDF文書のファイルサイズを縮小するために圧縮することができ、PDFの作成がネットワークのパフォーマンスに大きな影響を与えないようにします。

  1. オリジナルPDF:1MB
  2. 圧縮されたPDF:300KB

IronPDFの圧縮オプションを使用することにより、生成されるPDFごとに最大70%の帯域幅を節約できます。)汉语, 漢語_。

  • 中国語繁体字_別名:中文 (申し訳ありませんが、「Zhōngwén」という言葉は中国語を意味します。それでも、日本語への翻訳を希望されているなら、以下の内容を日本語に翻訳いたします:

Bandwidth A Typical PDF Document is 1MB. As web applications often generate large quantities of PDFs it’s important to consider bandwidth consumption.

IronPDF can compress PDF documents to reduce their file size, ensuring that the creation of PDFs will not significantly affect your network’s performance.

1.Original PDF: 1MB 2.Compressed PDF: 300KB

By using IronPDF’s compression options, you can save up to 70% of bandwidth for every PDF generated.


帯域幅 通常のPDF文書は1MBです。Webアプリケーションはしばしば大量のPDFを生成するため、帯域幅の消費を考慮することが重要です。

IronPDFは、PDF文書のファイルサイズを縮小するために圧縮することができ、PDFの作成がネットワークのパフォーマンスに大きな影響を与えないようにします。

  1. オリジナルPDF:1MB
  2. 圧縮されたPDF:300KB

IronPDFの圧縮オプションを使用することにより、生成されるPDFごとに最大70%の帯域幅を節約できます。)汉语, 漢語_。

  • ChineseTraditionalVertical _別名:中文 (申し訳ありませんが、「Zhōngwén」という言葉は中国語を意味します。それでも、日本語への翻訳を希望されているなら、以下の内容を日本語に翻訳いたします:

Bandwidth A Typical PDF Document is 1MB. As web applications often generate large quantities of PDFs it’s important to consider bandwidth consumption.

IronPDF can compress PDF documents to reduce their file size, ensuring that the creation of PDFs will not significantly affect your network’s performance.

1.Original PDF: 1MB 2.Compressed PDF: 300KB

By using IronPDF’s compression options, you can save up to 70% of bandwidth for every PDF generated.


帯域幅 通常のPDF文書は1MBです。Webアプリケーションはしばしば大量のPDFを生成するため、帯域幅の消費を考慮することが重要です。

IronPDFは、PDF文書のファイルサイズを縮小するために圧縮することができ、PDFの作成がネットワークのパフォーマンスに大きな影響を与えないようにします。

  1. オリジナルPDF:1MB
  2. 圧縮されたPDF:300KB

IronPDFの圧縮オプションを使用することにより、生成されるPDFごとに最大70%の帯域幅を節約できます。)汉语, 漢語_。

  • チェロキー別名:ᏣᎳĹᏂᎯᏣᏍķ, Tsalagi Gawonihisdi
  • コルシカ語 別名:corsu、lingua corsa
  • ウェールズ語 別名 Cymraeg
  • キリル文字 _キリル文字としても知られる。
  • デンマーク語 別名 dansk
  • デンマーク語 別名 dansk
  • ドイツ語 _別名 Deutsch
  • ドイツ語_ドイツ語としても知られている
  • デーヴァナーガリー文字 別名:Nagair, देवनागरी
  • ディベヒ_別名:ދހވެ
  • ゾンカ語 _別名:ར ོང ་ཁ_ཁ
  • ギリシャ語 別名 ελληνικά
  • 英語
  • MiddleEnglish 別名:イングリッシュ (紀元1100年から1500年まで)
  • エスペラント
  • エストニア語 別名:eesti、eesti keel
  • エチオピックのアルファベット 別名:Ge'ez,ግዝ, Gə+əəz
  • バスク語 別名euskara, euskera
  • フェロー語 別名 føroyskt
  • ペルシア語 別名 فارسی
  • フィリピノ語 _別名:フィリピン国語、標準タガログ語_英語
  • フィンランド語 別名:suomi、suomen kieli
  • 財務 _財務書類、数値書類、技術書類としても知られる。
  • フランス語 別名:français、langue française
  • FrakturAlphabet一般的なFrakturとしても知られる、ラテンアルファベットのカリグラフィーの手
  • フランク語 _別名フレンキスク、古フランコニア語
  • ミドル・フレンチ 別名:モワン・フランセーズ、ミドル・フレンチ (カ。 西暦1400-1600年)
  • 西フリジア語 _別名フリスク語
  • グルジア語アルファベット 別名 ქართული
  • スコットランド・ゲール語 別名Gàidhlig(ガイドリグ
  • アイルランド語 _ゲール語としても知られる
  • ガリシア語 別名 galego
  • AncientGreek 別名:Ἑληνική
  • ギリシャ文字 別名 ελληνικά
  • グジャラート語 _別名:ગર ીત ી_ગ ી
  • グジャラート語アルファベット _別名:ગુજાતી_જ
  • グルムキー文字 別名:Gurmukhī, ਗ ੁ, ਰ ਮ ੁ ਖ ੀ, Shahmukhi, گُرمُکھی, Sihk Script (グルムキー文字)。
  • ハングル_ハングル、한글、ハングル、조선글、hosŏn'gŭl_としても知られています。
  • HangulVerticalAlphabet _別名:ハングル、한글、ハングル、조선글、hosŏn'gŭl_ハングル縦書きアルファベット
  • 漢簡またの名を三韓、한어、韓語
  • HanSimplifiedVerticalAlphabet 別名:Samhan, 한어, 韓語|日本語検索・英語翻訳サイト
  • 漢語またの名を三韓語、한어、韓語
  • 漢訳縦書アルファベットまたの名を三韓、한어、韓語
  • ハイチ語またの名をKreyòl ayisyen
  • ヘブライ語 עברית としても知られている。
  • ヘブライ語アルファベット 別名 עברית
  • ヒンディー語 別名:हिन्दी, हिंदी
  • クロアチア語 別名 hrvatski jezik
  • ハンガリー語 別名 magyar
  • アルメニア語 別名:Հայերն
  • イヌクティット語 _別名 ᑎᑐᑦᑎᑎᑐᑦᑎᒃ
  • インドネシア語 別名 Bahasa Indonesia
  • アイスランド語 別名 Íslenska
  • イタリア語
  • ItalianOld 別名: italiano
  • JapaneseAlphabet 別名:日本語 (にほんご)
  • JapaneseVerticalAlphabet 別名:日本語 (にほんご)
  • ジャワ_またの名をバサ・ジャワ_。
  • 日本語別名 (にほんご)
  • JapaneseVertical 別名:日本語 (にほんご)
  • カンナダ語 別名 ಕನ ್ಡ
  • KannadaAlphabet _別名:ಕನ್_ಡ
  • グルジア語 ქართული_
  • グルジア語_ქართული_としても知られています。
  • カザフ語 қазақ тілі としても知られている。
  • クメール語 別名:ខ្មែរ, ខេមរភាស, ភŶស្មែរែរ
  • クメール語アルファベット _別名:ខ្ម, ខរűមរ𗅶ស, ភŶសរ_ŲមŲរ_ខ
  • キルギス語 別名:Кыргызча, Кыргыз тили
  • 北クルド語 別名クルマンジ、کورمانجی ,Kurmancî
  • 韓国語한국어としても知られる (現在韓国語を選択しました。しかし、翻訳対象が英語で指定されていますので、英語のコンテンツを提供してください。)조선어 (朝鮮語)
  • KoreanVertical 別名:한국어 (現在韓国語を選択しました。しかし、翻訳対象が英語で指定されていますので、英語のコンテンツを提供してください。)조선어 (朝鮮語)
  • ラオス人 別名:ພາວ
  • ラオスのアルファベット _別名:ພາວ_ラオスのアルファベット
  • ラテン語 _別名:ラテン語、ラテン言語
  • ラテンアルファベット _別名:ラテン語、ラテン言語
  • ラトビア語 別名 latviešu valoda
  • リトアニア語 別名 lietuvių kalba
  • ルクセンブルク語 別名 Lëtzebuergesch
  • マラヤーラム語 _別名:മലയ ാള ം_യ
  • マラヤーラム語アルファベット _別名:മലയാളം_യ
  • マラーティー語 別名 मारठी
  • MICR _別名:磁気インク文字認識、MICR小切手エンコーディング
  • マケドニア語 別名:македонски јазик
  • マルタ語 _別名:マルティ
  • モンゴル語 別名 монгол
  • マオリ_またの名をテ・レオ・マオリ_。
  • マレー語 バハサ・ムラユとしても知られる بهاس ملايو
  • ミャンマー 別名ビルマ語 ,ဗမာစာ
  • ミャンマー語アルファベット ビルマ語としても知られる ဗမာစာ
  • ネパール語 _नेपालीとしても知られる。
  • オランダ語 別名:Nederlands, Vlaams
  • ノルウェー語 _別名:ノルスク語
  • オック語_オック語としても知られる。
  • オリヤー語 _別名:ଓ습니다
  • オリヤーアルファベット _別名:ଓ습니다
  • パンジャブ語 別名:ਪ↪A70↩ਜੀ, پنجابی
  • ポーランド語 _język polski、polszczyzna_としても知られる。
  • ポルトガル語 _別名:português_ポルトガル語
  • パシュトゥー語 別名 پښتو
  • ケチュア語 _別名:ルナ・シミ、キチュワ語
  • ルーマニア語 別名 limba română
  • ロシア語 別名:русский зык
  • サンスクリット語 _別名:संस्क↪n943↩तम्
  • シンハラ語 _別名:ස↪DC4↩ිහි
  • シンハラ語アルファベット _別名:ස̫හහස
  • スロバキア語 別名 slovenčina, slovenský jazyk
  • SlovakFraktur _別名:slovenčina, slovenský jazyk _スロベニア語
  • スロベニア語 別名 slovenski jezik, slovenščina
  • シンド語 別名:सिन्धी, سنڌي سندھی
  • スペイン語_español, castellanoとしても知られる。
  • スペイン語_español, castellanoとしても知られる。
  • アルバニア語 別名:gjuha shqipe
  • セルビア語 別名 српски језик
  • セルビア語ラテン語 別名 српски језик
  • スンダ_別名:バサ・スンダ
  • スワヒリ語 _別名キスワヒリ語
  • スウェーデン語 _スヴェンスカとしても知られる
  • シリア語 シリア語、シリア語アラム語、ܠܫܢܐ ܣܘܪܝܝܐ, Lešānā Suryāyā としても知られる。
  • SyriacAlphabet シリア語、シリア語アラム語、ܠܫܢܐ ܣܘܪܝܐ, Lešānā Suryāyā としても知られる。
  • タミル語 _別名:தம்_ழ
  • タミル語アルファベット _別名:தம்_த
  • タタール語 別名:татар теле, tatar tele
  • テルグ語 _別名:తెలు ు
  • TeluguAlphabet_別名:త̑ెలు
  • タジク語 別名:тоάик, toğikī, تاجیکی
  • タガログ語 _別名:Wikang Tagalog, ᜏ ᜅ ᜒ ᜃ ᜔ ᜆ ᜄ ᜎ ᜓ ᜄ ᜔_ᜄ
  • タイ語 別名 ไทย
  • Thaanaアルファベット 別名:Taana , Tāna , ތާނނ
  • タイアルファベット 別名 ไทย
  • TibetanAlphabet 別名:チベット標準語、チベット語、中央ཡག་
  • ティグリニャ語 別名 ትግኛ
  • トンガ_別名:ファカ・トンガ
  • トルコ語_Türkçe_としても知られる。
  • ウイグル語 別名:Uyƣurqə, ئۇيغۇرچە.
  • ウクライナ語 別名:українська мова
  • ウルドゥー語 別名 اردو
  • ウズベク語 別名:O'zbek, Ўзбек, أۇزبېك
  • ウズベク・キリル語 別名:O'zbek, Ўзбек, أۇزبېك
  • ベトナム語_別名:Tiếng Việt(ティエン・ヴィエット
  • ベトナム語アルファベット 別名Tiếng Việt
  • イディッシュ語 別名 ייִדיש
  • ヨルバ語_ヨルバとしても知られる。

例アラビア語のOCR (+その他多数)

次の例では、アラビア語の文書をスキャンする方法を示す。

PM> Install-Package IronOcr.Languages.Arabic
アラビア語のC#(シーシャープ)OCR
:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-6.cs
// PM> Install IronOcr.Languages.Arabic
using IronOcr;

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;

using OcrInput input = new OcrInput();
input.LoadImageFrame("img/arabic.gif", 1);
// add image filters if needed
// In this case, even thought input is very low quality
// IronTesseract can read what conventional Tesseract cannot.

OcrResult result = ocr.Read(input);

// Console can't print Arabic on Windows easily.
// Let's save to disk instead.
result.SaveAsTextFile("arabic.txt");
' PM> Install IronOcr.Languages.Arabic
Imports IronOcr

Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic

Using input As New OcrInput()
	input.LoadImageFrame("img/arabic.gif", 1)
	' add image filters if needed
	' In this case, even thought input is very low quality
	' IronTesseract can read what conventional Tesseract cannot.
	
	Dim result As OcrResult = ocr.Read(input)
	
	' Console can't print Arabic on Windows easily.
	' Let's save to disk instead.
	result.SaveAsTextFile("arabic.txt")
End Using
VB   C#

例同じ文書内の複数の言語でOCR。

次の例では、同じ文書に複数の言語をOCRスキャンする方法を示します。

これは実際によくあることで、たとえば中国語の文書に英語の単語やURLが含まれていることがある。

PM> Install-Package IronOcr.Languages.ChineseSimplified
:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-7.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;

// We can add any number of languages.
ocr.AddSecondaryLanguage(OcrLanguage.English);
// Optionally add custom tesseract .traineddata files by specifying a file path

using OcrInput input = new OcrInput();
input.LoadImage("img/MultiLanguage.jpeg");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("MultiLanguage.txt");
Imports IronOcr

Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified

' We can add any number of languages.
ocr.AddSecondaryLanguage(OcrLanguage.English)
' Optionally add custom tesseract .traineddata files by specifying a file path

Using input As New OcrInput()
	input.LoadImage("img/MultiLanguage.jpeg")
	Dim result As OcrResult = ocr.Read(input)
	result.SaveAsTextFile("MultiLanguage.txt")
End Using
VB   C#

マルチページ・ドキュメント

IronOCR (アイアンOCR) は複数のページ/画像を一つの OcrResult にまとめることができます。 これは、複数の画像からドキュメントを作成する場合に非常に便利です。 IronTesseractのこの特別な機能は、OCR入力から検索可能なPDFやHTMLファイルを作成するのに非常に便利であることは後述します。

IronOcrは、画像、TIFFフレーム、PDFページを1つのOCR入力に「ミックス&マッチ」することを可能にします。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-8.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);

OcrResult result = ocr.Read(input);

Console.WriteLine($"{result.Pages.Length} Pages"); // 3 Pages
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("image3.gif", pageindices)

Dim result As OcrResult = ocr.Read(input)

Console.WriteLine($"{result.Pages.Length} Pages") ' 3 Pages
VB   C#

また、TIFFの全ページを簡単にOCRすることもできます。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-9.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("MultiFrame.Tiff", pageindices);
OcrResult result = ocr.Read(input);

Console.WriteLine(result.Text);
Console.WriteLine($"{result.Pages.Length} Pages");
// 1 page for every frame (page) in the TIFF
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("MultiFrame.Tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)

Console.WriteLine(result.Text)
Console.WriteLine($"{result.Pages.Length} Pages")
' 1 page for every frame (page) in the TIFF
VB   C#
:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-10.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadPdf("example.pdf", Password: "password");
// We can also select specific PDF page numbers to OCR

OcrResult result = ocr.Read(input);

Console.WriteLine(result.Text);
Console.WriteLine($"{result.Pages.Length} Pages");
// 1 page for every page of the PDF
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadPdf("example.pdf", Password:= "password")
' We can also select specific PDF page numbers to OCR

Dim result As OcrResult = ocr.Read(input)

Console.WriteLine(result.Text)
Console.WriteLine($"{result.Pages.Length} Pages")
' 1 page for every page of the PDF
VB   C#

検索可能なPDF

C#(シーシャープ)やVB.NETでOCR結果を検索可能なPDFとしてエクスポートすることは、アイアンOCRの人気の機能です。 これは、データベースの人口、SEO、PDFのユーザビリティの企業や政府に本当に役立ちます。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-11.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.Title = "Quarterly Report";
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
input.Title = "Quarterly Report"
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("image3.gif", pageindices)

Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
VB   C#

OCRのもう一つのトリックは、既存のPDF文書を検索可能に変換することである。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-12.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.Title = "Pdf Metadata Name";
input.LoadPdf("example.pdf", Password: "password");
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
input.Title = "Pdf Metadata Name"
input.LoadPdf("example.pdf", Password:= "password")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
VB   C#

IronTesseractを使って1ページ以上のTIFFドキュメントを検索可能なPDFに変換する場合も同様です。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-13.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Pdf Title";
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Pdf Title"
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
VB   C#

HocrのHTMLエクスポート

同様に、OCR結果文書をHocr HTMLにエクスポートすることもできます。 これは、XMLリーダーでパースしたり、視覚的に魅力的なHTMLにマークアップすることができるXML文書です。

これにより、PDFからHTMLへの変換や、TIFFからHTMLへの変換がある程度可能になる。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-14.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.Title = "Html Title";

// Add more content as required...
input.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf",Password: "password");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
input.Title = "Html Title"

' Add more content as required...
input.LoadImage("image2.jpeg")
input.LoadPdf("example.pdf",Password:= "password")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)

Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("hocr.html")
VB   C#

OCRドキュメントのバーコード読み取り

IronOCR (アイアンOCR)は、バーコードやQRコードも読み取ることができるという点で、従来のテッセラクトにはないユニークな利点がある;

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-15.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

ocr.Configuration.ReadBarCodes = true;

using OcrInput input = new OcrInput();
input.LoadImage("img/Barcode.png");

OcrResult result = ocr.Read(input);

foreach (var barcode in result.Barcodes)
{
    Console.WriteLine(barcode.Value);
    // type and location properties also exposed
}
Imports IronOcr

Private ocr As New IronTesseract()

ocr.Configuration.ReadBarCodes = True

Using input As New OcrInput()
	input.LoadImage("img/Barcode.png")
	
	Dim result As OcrResult = ocr.Read(input)
	
	For Each barcode In result.Barcodes
		Console.WriteLine(barcode.Value)
		' type and location properties also exposed
	Next barcode
End Using
VB   C#

画像からテキストへのOCR結果を詳しく見る

このチュートリアルで最後に見るのは、OCR結果オブジェクトです。 私たちがOCRを読むとき、通常はテキストだけを取り出すことを望むが、アイアンOCRには実は高度な開発者に役立つかもしれない膨大な情報が含まれている。

OCR結果オブジェクトの中には、反復可能なページのコレクションがある。 各ページには、バーコード、パワーグラフ、テキスト行、単語、文字がある。

これらのオブジェクトは、実際にはそれぞれ「場所」を含んでいる; X座標; Y座標; 幅と高さ; それに関連する画像を検査することができる; フォント名; フォントサイズ;テキストが書かれる方向; テキストの回転; と、IronOCR (アイアンOCR)がその特定の単語、行、段落に対して持っている統計的信頼性。

つまり、開発者は創造性を発揮し、情報を検査したりエクスポートしたりするために、どのような方法でもOCRデータを扱うことができる。

また、.NET OCR結果オブジェクトから、段落、単語、バーコードなどの任意の要素を操作し、画像またはBitMapとしてエクスポートすることもできます。

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-16.cs
using IronOcr;
using IronSoftware.Drawing;

// We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters
// This allows us to explore, export and draw OCR content using other APIs

IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);

OcrResult result = ocr.Read(input);

foreach (var page in result.Pages)
{
    // Page object
    int pageNumber = page.PageNumber;
    string pageText = page.Text;
    int pageWordCount = page.WordCount;

    // null if we don't set Ocr.Configuration.ReadBarCodes = true;
    OcrResult.Barcode[] barcodes = page.Barcodes;

    AnyBitmap pageImage = page.ToBitmap(input);
    System.Drawing.Bitmap pageImageLegacy = page.ToBitmap(input);
    int pageWidth = page.Width;
    int pageHeight = page.Height;

    foreach (var paragraph in page.Paragraphs)
    {
        // Pages -> Paragraphs
        int paragraphNumber = paragraph.ParagraphNumber;
        String paragraphText = paragraph.Text;
        System.Drawing.Bitmap paragraphImage = paragraph.ToBitmap(input);
        int paragraphXLocation = paragraph.X;
        int paragraphYLocation = paragraph.Y;
        int paragraphWidth = paragraph.Width;
        int paragraphHeight = paragraph.Height;
        double paragraphOcrAccuracy = paragraph.Confidence;
        var paragraphTextDirection = paragraph.TextDirection;

        foreach (var line in paragraph.Lines)
        {
            // Pages -> Paragraphs -> Lines
            int lineNumber = line.LineNumber;
            String lineText = line.Text;
            AnyBitmap lineImage = line.ToBitmap(input);
            System.Drawing.Bitmap lineImageLegacy = line.ToBitmap(input);
            int lineXLocation = line.X;
            int lineYLocation = line.Y;
            int lineWidth = line.Width;
            int lineHeight = line.Height;
            double lineOcrAccuracy = line.Confidence;
            double lineSkew = line.BaselineAngle;
            double lineOffset = line.BaselineOffset;

            foreach (var word in line.Words)
            {
                // Pages -> Paragraphs -> Lines -> Words
                int wordNumber = word.WordNumber;
                String wordText = word.Text;
                AnyBitmap wordImage = word.ToBitmap(input);
                System.Drawing.Image wordImageLegacy = word.ToBitmap(input);
                int wordXLocation = word.X;
                int wordYLocation = word.Y;
                int wordWidth = word.Width;
                int wordHeight = word.Height;
                double wordOcrAccuracy = word.Confidence;

                if (word.Font != null)
                {
                    // Word.Font is only set when using Tesseract Engine Modes rather than LTSM
                    String fontName = word.Font.FontName;
                    double fontSize = word.Font.FontSize;
                    bool isBold = word.Font.IsBold;
                    bool isFixedWidth = word.Font.IsFixedWidth;
                    bool isItalic = word.Font.IsItalic;
                    bool isSerif = word.Font.IsSerif;
                    bool isUnderlined = word.Font.IsUnderlined;
                    bool fontIsCaligraphic = word.Font.IsCaligraphic;
                }

                foreach (var character in word.Characters)
                {
                    // Pages -> Paragraphs -> Lines -> Words -> Characters
                    int characterNumber = character.CharacterNumber;
                    String characterText = character.Text;
                    AnyBitmap characterImage = character.ToBitmap(input);
                    System.Drawing.Bitmap characterImageLegacy = character.ToBitmap(input);
                    int characterXLocation = character.X;
                    int characterYLocation = character.Y;
                    int characterWidth = character.Width;
                    int characterHeight = character.Height;
                    double characterOcrAccuracy = character.Confidence;

                    // Output alternative symbols choices and their probability.
                    // Very useful for spell checking
                    OcrResult.Choice[] characterChoices = character.Choices;
                }
            }
        }
    }
}
Imports IronOcr
Imports IronSoftware.Drawing

' We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters
' This allows us to explore, export and draw OCR content using other APIs

Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True

Using input As New OcrInput()
	Dim pageindices = New Integer() { 1, 2 }
	input.LoadImageFrames("img\Potter.tiff", pageindices)
	
	Dim result As OcrResult = ocr.Read(input)
	
	For Each page In result.Pages
		' Page object
		Dim pageNumber As Integer = page.PageNumber
		Dim pageText As String = page.Text
		Dim pageWordCount As Integer = page.WordCount
	
		' null if we don't set Ocr.Configuration.ReadBarCodes = true;
		Dim barcodes() As OcrResult.Barcode = page.Barcodes
	
		Dim pageImage As AnyBitmap = page.ToBitmap(input)
		Dim pageImageLegacy As System.Drawing.Bitmap = page.ToBitmap(input)
		Dim pageWidth As Integer = page.Width
		Dim pageHeight As Integer = page.Height
	
		For Each paragraph In page.Paragraphs
			' Pages -> Paragraphs
			Dim paragraphNumber As Integer = paragraph.ParagraphNumber
			Dim paragraphText As String = paragraph.Text
			Dim paragraphImage As System.Drawing.Bitmap = paragraph.ToBitmap(input)
			Dim paragraphXLocation As Integer = paragraph.X
			Dim paragraphYLocation As Integer = paragraph.Y
			Dim paragraphWidth As Integer = paragraph.Width
			Dim paragraphHeight As Integer = paragraph.Height
			Dim paragraphOcrAccuracy As Double = paragraph.Confidence
			Dim paragraphTextDirection = paragraph.TextDirection
	
			For Each line In paragraph.Lines
				' Pages -> Paragraphs -> Lines
				Dim lineNumber As Integer = line.LineNumber
				Dim lineText As String = line.Text
				Dim lineImage As AnyBitmap = line.ToBitmap(input)
				Dim lineImageLegacy As System.Drawing.Bitmap = line.ToBitmap(input)
				Dim lineXLocation As Integer = line.X
				Dim lineYLocation As Integer = line.Y
				Dim lineWidth As Integer = line.Width
				Dim lineHeight As Integer = line.Height
				Dim lineOcrAccuracy As Double = line.Confidence
				Dim lineSkew As Double = line.BaselineAngle
				Dim lineOffset As Double = line.BaselineOffset
	
				For Each word In line.Words
					' Pages -> Paragraphs -> Lines -> Words
					Dim wordNumber As Integer = word.WordNumber
					Dim wordText As String = word.Text
					Dim wordImage As AnyBitmap = word.ToBitmap(input)
					Dim wordImageLegacy As System.Drawing.Image = word.ToBitmap(input)
					Dim wordXLocation As Integer = word.X
					Dim wordYLocation As Integer = word.Y
					Dim wordWidth As Integer = word.Width
					Dim wordHeight As Integer = word.Height
					Dim wordOcrAccuracy As Double = word.Confidence
	
					If word.Font IsNot Nothing Then
						' Word.Font is only set when using Tesseract Engine Modes rather than LTSM
						Dim fontName As String = word.Font.FontName
						Dim fontSize As Double = word.Font.FontSize
						Dim isBold As Boolean = word.Font.IsBold
						Dim isFixedWidth As Boolean = word.Font.IsFixedWidth
						Dim isItalic As Boolean = word.Font.IsItalic
						Dim isSerif As Boolean = word.Font.IsSerif
						Dim isUnderlined As Boolean = word.Font.IsUnderlined
						Dim fontIsCaligraphic As Boolean = word.Font.IsCaligraphic
					End If
	
					For Each character In word.Characters
						' Pages -> Paragraphs -> Lines -> Words -> Characters
						Dim characterNumber As Integer = character.CharacterNumber
						Dim characterText As String = character.Text
						Dim characterImage As AnyBitmap = character.ToBitmap(input)
						Dim characterImageLegacy As System.Drawing.Bitmap = character.ToBitmap(input)
						Dim characterXLocation As Integer = character.X
						Dim characterYLocation As Integer = character.Y
						Dim characterWidth As Integer = character.Width
						Dim characterHeight As Integer = character.Height
						Dim characterOcrAccuracy As Double = character.Confidence
	
						' Output alternative symbols choices and their probability.
						' Very useful for spell checking
						Dim characterChoices() As OcrResult.Choice = character.Choices
					Next character
				Next word
			Next line
		Next paragraph
	Next page
End Using
VB   C#

サマリー

IronOCRはC#開発者に最先端のツールを提供します Tesseract API (テッセラクト API) 私たちが知っている限り、どのプラットフォームでも。

IronOCRはWindows、Linux、Mac、Azure、AWS、Lambdaにデプロイ可能で、_.NET Frameworkプロジェクト、.NET Standard.NET Core_をサポートしています。

不完全な文書であっても、アイアンOCRに入力すると、文書の書式が悪く、ゆがみがあり、デジタルノイズがあっても、統計的に約99%の精度で内容を正確に読み取ることができることがわかる。

我々はOCRスキャンの中でバーコードを読み取ることができ、さらにOCR結果をHTMLや検索可能なPDFとしてエクスポートすることもできます。

これはIronOCR独自のものであり、標準的なOCRライブラリやTesseractにはない機能です。

これから進む

IronOCR (アイアンOCR)についてさらに詳しくお知りになりたい方は、以下をお勧めします:

ソースコードダウンロード