IronOCRを使用して写真を読み取る方法
大量のドキュメント、特にTIFFファイルのようなスキャン画像を扱う際、手動でのテキスト抽出は時間がかかり、人為的なミスが発生しやすくなります。 ここで光学文字認識(OCR)が活躍します。画像からテキストを正確にデジタルデータに変換する自動化された方法を提供します。 OCR技術は、スキャンされた文書や写真などの画像の複雑さに対処し、それらを検索可能で編集可能なテキストに変換することができます。 これは、文書処理を迅速化するだけでなく、手動による書き写しと比較して、より正確なデータ抽出を保証します。
TIFFのような形式でのOCRの使用は、サイズ、色深度、圧縮などにより読み取りが難しい可能性がありますが、企業や開発者が大量のデータを迅速にデジタル化および管理することを可能にします。 IronOCRのOCRソリューション、ReadPhoto
関数を使用することで、開発者は画像からテキストを抽出し、キーワードの検索やスキャンしたデータを検索可能なPDFに変換するなどの高度な操作を実行することもできます。 この技術は、効率的なデータ検索が重要な法的文書、アーカイブ、または領収書を扱う業界に特に有用です。
このチュートリアルでは、ReadPhoto
の使用方法および結果オブジェクトの操作方法について、簡単に入力例を提供します。 開発者が標準のRead
ではなくReadPhoto
を使用する場面もあります。
IronOCRを使用して写真を読み取る方法
- 写真を読み取るためのC#ライブラリをダウンロード
- 画像を処理用にインポートする
- 画像の種類に基づいて適切なインポート方法を使用する
- 画像からデータを抽出するには、
ReadPhoto
メソッドを使用します。 - OcrPhotoResult プロパティにアクセスして、抽出されたデータを表示および操作します。
今日から無料トライアルでIronOCRをあなたのプロジェクトで使い始めましょう。
この機能を使用するには、IronOcr.Extension.AdvancedScan パッケージもインストールする必要があります。
写真を読む例
高品質な写真フォーマット、例えばtiff
やgif
の読み取りは、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)
出力
テキスト: OCR入力から抽出されたテキスト。
精度: すべての文字の平均に対する統計的精度の信頼性を示す「double」プロパティで、1が最高、0が最低です。
TextRegions: OCRテキストとその位置が入力内にどこにあるかを示すプロパティ「TextRegions」のリスト。 上記の例では、フレーム番号とテキストを含む矩形を印刷しました。
ReadPhoto
と Read
の違い
このreadPhoto
メソッドと標準のread
メソッドとの主な違いは、結果オブジェクトと処理するファイル形式です。 LoadImageFrame
は特に tiff
と gif
のみを受け入れ、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
プロパティを使用することで、結果の精度がどの程度であるかを知ることができ、開発者は必要に応じてテスト、再反復、最適化が可能になります。
開発者は効率性と正確性の間の適切なバランスを見つけ、画像が一貫性のある基準に達していることを確認するべきです。