IronOCRを使用して写真を読み取る方法

2025年2月16日
更新済み 2025年2月16日
共有:
This article was translated from English: Does it need improvement?
Translated
View the article in English

大量のドキュメント、特にTIFFファイルのようなスキャン画像を扱う際、手動でのテキスト抽出は時間がかかり、人為的なミスが発生しやすくなります。 ここで光学文字認識(OCR)が活躍します。画像からテキストを正確にデジタルデータに変換する自動化された方法を提供します。 OCR技術は、スキャンされた文書や写真などの画像の複雑さに対処し、それらを検索可能で編集可能なテキストに変換することができます。 これは、文書処理を迅速化するだけでなく、手動による書き写しと比較して、より正確なデータ抽出を保証します。

TIFFのような形式でのOCRの使用は、サイズ、色深度、圧縮などにより読み取りが難しい可能性がありますが、企業や開発者が大量のデータを迅速にデジタル化および管理することを可能にします。 IronOCRのOCRソリューション、ReadPhoto 関数を使用することで、開発者は画像からテキストを抽出し、キーワードの検索やスキャンしたデータを検索可能なPDFに変換するなどの高度な操作を実行することもできます。 この技術は、効率的なデータ検索が重要な法的文書、アーカイブ、または領収書を扱う業界に特に有用です。

このチュートリアルでは、ReadPhotoの使用方法および結果オブジェクトの操作方法について、簡単に入力例を提供します。 開発者が標準のReadではなくReadPhotoを使用する場面もあります。

今日から無料トライアルでIronOCRをあなたのプロジェクトで使い始めましょう。

最初のステップ:
green arrow pointer

この機能を使用するには、IronOcr.Extension.AdvancedScan パッケージもインストールする必要があります。

写真を読む例

高品質な写真フォーマット、例えばtiffgifの読み取りは、IronOCRを使用することで比較的簡単です。 まず、新しい変数を作成し、それをOcrInputとして割り当て、次にLoadImageFrameを使用して画像を読み込みます。 最後に、ReadPhoto メソッドを使用して結果を取得します。

次の内容にご注意ください。

  • Tiffには単一の画像内に複数のフレームが含まれているため、frameNumberパラメーターが必要です。 さらに、インデックスは1ではなく0から始まります。
  • このメソッドは現在、英語、中国語、日本語、韓国語、ラテンアルファベットにのみ対応しています。
  • 高度なスキャンを .NET Framework で使用するには、プロジェクトを x64アーキテクチャで実行する必要があります。

入力

ほとんどのブラウザはTIFF形式をネイティブにサポートしていないため、TIFF入力をこちらからダウンロードできます。 TIFFファイルを表示するために、それをWEBP形式に変換します。

入力

コード

:path=/static-assets/ocr/content-code-examples/how-to/read-photo-read-photo.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var inputPhoto = new OcrInput();
inputPhoto.LoadImageFrame("ocr.tiff", 0);

// Read photo
OcrPhotoResult result = ocr.ReadPhoto(inputPhoto);

// Index number refer to region order in the page
int number = result.TextRegions[0].FrameNumber;

// Extract the text in the first region
string textinregion = result.TextRegions[0].TextInRegion;

//Extract the co_ordinates of the first text region
Rectangle region = result.TextRegions[0].Region;

var output = $"Text in First Region: {textinregion}\n"
             + $"Text Region:\n"
             + $"Starting X: {region.X}\n"
             + $"Starting Y: {region.Y}\n"
             + $"Region Width: {region.Width}\n"
             + $"Region Height: {region.Height}\n"
             + $"Result Confidence: {result.Confidence}\n\n"
             + $"Full Scnned Photo Text: {result.Text}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputPhoto = New OcrInput()
inputPhoto.LoadImageFrame("ocr.tiff", 0)

' Read photo
Dim result As OcrPhotoResult = ocr.ReadPhoto(inputPhoto)

' Index number refer to region order in the page
Dim number As Integer = result.TextRegions(0).FrameNumber

' Extract the text in the first region
Dim textinregion As String = result.TextRegions(0).TextInRegion

'Extract the co_ordinates of the first text region
Dim region As Rectangle = result.TextRegions(0).Region

Dim output = $"Text in First Region: {textinregion}" & vbLf & $"Text Region:" & vbLf & $"Starting X: {region.X}" & vbLf & $"Starting Y: {region.Y}" & vbLf & $"Region Width: {region.Width}" & vbLf & $"Region Height: {region.Height}" & vbLf & $"Result Confidence: {result.Confidence}" & vbLf & vbLf & $"Full Scnned Photo Text: {result.Text}"

Console.WriteLine(output)
$vbLabelText   $csharpLabel

出力

出力

テキスト: OCR入力から抽出されたテキスト。

精度: すべての文字の平均に対する統計的精度の信頼性を示す「double」プロパティで、1が最高、0が最低です。

TextRegions: OCRテキストとその位置が入力内にどこにあるかを示すプロパティ「TextRegions」のリスト。 上記の例では、フレーム番号とテキストを含む矩形を印刷しました。


ReadPhotoRead の違い

このreadPhotoメソッドと標準のreadメソッドとの主な違いは、結果オブジェクトと処理するファイル形式です。 LoadImageFrame は特に tiffgif のみを受け入れ、Jpeg などのフォーマットを受け入れない理由がいくつかあります。

TiffとJpg画像の比較

Tiffというファイル形式は非圧縮で、通常、複数のページや複数のフレームを1つの形式にまとめるために使用されます。 通常、高品質なマルチイメージストレージ(例: 法的文書、医療画像)に使用されます。 それは標準的なjpg形式よりもはるかに複雑であり、そのために完全にテキストを抽出するには異なる方法が必要です。

さらに、Tiff画像は異なる圧縮方法を使用するため、IronOCRはテキストを解読するための特殊な方法を使用しなければなりません。

ここで、tiff と jpg の間の比較をさらに説明します。

Feature TIFF (Tagged Image File Format) JPG/JPEG (Joint Photographic Experts Group)
Compression Lossless or uncompressed (preserves quality) Lossy compression (reduces quality for smaller file size)
File Size Large (due to high quality and optional lack of compression) Smaller, optimized for web use and fast loading
Image Quality High (ideal for professional use, retains all details) Lower (due to lossy compression, some quality is sacrificed)
Color Depth Supports high color depth (up to 16-bit or 32-bit per channel) 24-bit color (16.7 million colors)
Use Case Professional photography, publishing, scanning, archiving Web images, social media, everyday photos
Transparency Supports transparency and alpha channels Does not support transparency
Editing Good for multiple edits (no quality loss with resaving) Quality degrades with repeated edits and saves
Compatibility Widely supported in professional software Universally supported across all platforms and devices
Animation Does not support animation Does not support animation
Metadata Stores extensive metadata (EXIF, layers, etc.) Stores EXIF metadata but is more limited

異なるシナリオ

開発者は、各ユースケースを考慮して、アプリケーションが効果的に動作するようにさらに最適化する必要があります。 ただし、readPhotoは上記のようなTiffのような複雑な画像に適していますが、結果の処理は遅くなります。 一方で、jpgは画質が低いかもしれませんが、操作は通常より速くなります。 しかし、ノイズがあるなど画像の品質が悪い場合、OCRの信頼率が低くなる可能性があります。

OcrPhotoResults またはインターフェイス IOcrResult を使用するクラスの confidence プロパティを使用することで、結果の精度がどの程度であるかを知ることができ、開発者は必要に応じてテスト、再反復、最適化が可能になります。

開発者は効率性と正確性の間の適切なバランスを見つけ、画像が一貫性のある基準に達していることを確認するべきです。