ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
モバイル技術の台頭に伴い、Scanbot SDKやネイティブSDKのようなドキュメントスキャンアプリは、個人や企業にとって不可欠なツールやソリューションエキスパートになっています。このチュートリアルでは、最新バージョンの.NET Multi-platform App UIを使用してドキュメントスキャナーアプリを作成する方法を探ります。(MAUI)そして IronOCR、強力なOCR(光学文字認識).NET用ライブラリ。 .NET MAUIは、Androidなどのクロスプラットフォームモバイルアプリの作成を簡単にし、最終ユーザーのデバイスにシームレスに展開できるようにします。このガイドが終わるころには、画像やスキャンしたファイルからテキストを抽出できる独自のドキュメントスキャナーSDKアプリを開発できるようになります。
ドキュメントスキャナーSDKを使用するためにIronOCR C#ライブラリをインストールします。
必要なコントロールで.NET MAUIフォームを設計。
MediaPicker.CapturePhotoAsync メソッドを使用して写真フレームをキャプチャします。
キャプチャされた写真を Stream に変換します。
ストリームを OcrInput の LoadImage メソッドに渡します。
IronTesseractのReadメソッドを使用してOCRを実行します。
IronOCRは最先端の光学文字認識 (Optical Character Recognition) です。(OCR (光学式文字認識))Iron Software, LLCによって開発されたソフトウェアで、画像やスキャンした文書を正確かつ効率的に編集可能なテキストに変換します。 OCR技術は、スキャンされた文書、PDF、および画像などのさまざまなソースから貴重な情報を抽出することを容易にし、ビジネスの文書処理の方法を革命的に変えました。
IronOCRは、その高度な機能、堅牢なパフォーマンス、および統合の容易さにより、OCRソリューションの中で際立っています。 アプリケーションにOCR機能を統合しようとしている開発者や、データ生成ドキュメント管理プロセスを効率化しようとしている企業にとって、IronOCRは包括的なソリューションを提供します。
以下に、IronOCRの主要な特徴をいくつか示します:
高精度: IronOCR は最先端のアルゴリズムと機械学習技術を使用して、テキスト認識において卓越した精度を実現します。 それは、低解像度や品質の低いスキャンを含むQRコードの画像を含む複雑なドキュメントから正確にテキストを抽出することができます。
多言語サポート: IronOCR の際立った特徴の一つは、その広範な言語サポートです。 それは127以上の言語でテキストを認識できるため、多様な言語環境で事業を展開する企業に適しています。
画像前処理: 正確さを向上させるために、IronOCRはノイズ除去、コントラスト調整、傾き補正などの様々な画像前処理機能を提供します。 これらの前処理技術は、特に歪んだり不完全な画像を扱う場合に、OCRの結果を改善するのに役立ちます。
さまざまなファイル形式のサポート: IronOCRは、TIFF、JPEG、PNG、およびPDFを含む幅広いファイル形式をサポートしています。 この柔軟性により、ユーザーは異なるソースからのドキュメントを互換性の問題を心配することなく処理することができます。
カスタマイズオプション: 開発者は自身の特定の要件に応じてIronOCRの動作をカスタマイズすることができます。 認識パラメーターの微調整や既存のワークフローとの統合など、IronOCRは高度な柔軟性とカスタマイズ性を提供します。
高速かつスケーラブル: IronOCRはパフォーマンスのために最適化されており、大量のドキュメントからでも迅速にテキストを抽出することができます。 そのスケーラブルなアーキテクチャにより、少数のドキュメントの処理から巨大なドキュメントリポジトリの管理までシームレスな操作が保証されます。
.NETアプリケーションとの統合: IronOCRは.NETアプリケーションとシームレスに統合され、開発者にOCR機能をソフトウェアプロジェクトに組み込むための使いやすいAPIとライブラリを提供します。 この緊密な統合により、開発が簡素化され、OCR対応アプリケーションの市場投入までの時間が短縮されます。
Visual Studio 2022を開き、新しい.NET MAUIアプリプロジェクトを作成します。
適切なプロジェクト名を選択し、プロジェクト設定を構成してください。
Visual Studioでソリューションを右クリックします。
まず、MainPage.xamlのレイアウトを設計しましょう。 シンプルなレイアウトを作成し、キャプチャした写真を表示するための画像コントロール、写真を撮影するためのCaptureボタン、抽出されたテキストを表示するためのラベルを配置します。
MainPage.xamlのためのXAMLコードは次のとおりです:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://schemas.microsoft.com/dotnet/2021/maui/design"
x:Class="DocumentScanner.MainPage">
<ScrollView>
<VerticalStackLayout
Padding="30,0"
Spacing="25">
<Image
Source="dotnet_bot.png"
HeightRequest="185"
Aspect="AspectFit"
SemanticProperties.Description="dot net bot in a race car number eight" />
<Label
Text="Welcome to .NET MAUI Document Scanner SDK"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label
Text="Using IronOCR"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to .NET MAUI Document Scanner SDK" />
<!-- Camera preview -->
<Image x:Name="cameraPreview" />
<!-- Capture button -->
<Button Text="Capture" Clicked="OnCaptureClicked" />
<!-- Text display area -->
<Label x:Name="textLabel"
Text="Recognized Text:"/>
</VerticalStackLayout>
</ScrollView>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://schemas.microsoft.com/dotnet/2021/maui/design"
x:Class="DocumentScanner.MainPage">
<ScrollView>
<VerticalStackLayout
Padding="30,0"
Spacing="25">
<Image
Source="dotnet_bot.png"
HeightRequest="185"
Aspect="AspectFit"
SemanticProperties.Description="dot net bot in a race car number eight" />
<Label
Text="Welcome to .NET MAUI Document Scanner SDK"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label
Text="Using IronOCR"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to .NET MAUI Document Scanner SDK" />
<!-- Camera preview -->
<Image x:Name="cameraPreview" />
<!-- Capture button -->
<Button Text="Capture" Clicked="OnCaptureClicked" />
<!-- Text display area -->
<Label x:Name="textLabel"
Text="Recognized Text:"/>
</VerticalStackLayout>
</ScrollView>
</ContentPage>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://schemas.microsoft.com/dotnet/2021/maui/design" x:@Class="DocumentScanner.MainPage"> <ScrollView> <VerticalStackLayout Padding="30,0" Spacing="25"> <Image Source="dotnet_bot.png" HeightRequest="185" Aspect="AspectFit" SemanticProperties.Description="dot net bot in a race car number eight" /> <Label Text="Welcome to .NET MAUI Document Scanner SDK" Style="{StaticResource Headline}" SemanticProperties.HeadingLevel="Level1" /> <Label Text="Using IronOCR" Style="{StaticResource SubHeadline}" SemanticProperties.HeadingLevel="Level2" SemanticProperties.Description="Welcome to .NET MAUI Document Scanner SDK" /> <!-- Camera preview -- > <Image x:Name="cameraPreview" /> <!-- Capture button -- > <Button Text="Capture" Clicked="OnCaptureClicked" /> <!-- Text display area -- > <Label x:Name="textLabel" Text="Recognized Text:"/> </VerticalStackLayout> </ScrollView> </ContentPage>
このレイアウトでは:
.NET MAUIドキュメントスキャンアプリにテキスト抽出機能を統合するために、次のステップに従います:
カメラAPIを利用:アプリケーション内でイメージファイルを直接キャプチャするために、まず.NET MAUIが提供するカメラAPIを活用します。
IronOCR に画像を渡す: 画像がキャプチャされたら、強力な OCR ライブラリである IronOCR に渡してテキスト抽出を行います。 IronOCRは高い精度で画像からテキストを抽出するための強力な機能を提供します。
抽出されたテキストを表示する:最後に、アプリのユーザーインターフェース上の指定されたエリアに抽出されたテキストを表示します。 これにより、ユーザーはキャプチャされた画像やQRコードから抽出されたテキストを簡単に表示することができます。
以下は、これらの手順を実装するための対応するコードスニペットです。
using IronOcr;
namespace DocumentScanner
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnCaptureClicked(object sender, EventArgs e)
{
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
try
{
// Request camera permissions
var status = await Permissions.RequestAsync<Permissions.Camera>();
if (status == PermissionStatus.Granted)
{
// Take photo
var photo = await MediaPicker.CapturePhotoAsync();
if (photo != null)
{
// Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(() => photo.OpenReadAsync().Result);
using (var stream = await photo.OpenReadAsync())
{
// Use a stream from the captured photo for OCR
var ocr = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(stream);
var ocrResult = ocr.Read(ocrInput);
if (string.IsNullOrEmpty(ocrResult.Text))
{
await DisplayAlert("Error", "No Text Detected!", "OK");
}
else
{
await DisplayAlert("Text Detected!", ocrResult.Text, "OK");
// Display extracted text
textLabel.Text = ocrResult.Text;
}
}
}
}
else
{
// Camera permission denied
await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK");
}
}
catch (Exception ex)
{
// Handle exception
await DisplayAlert("Error", ex.Message, "OK");
}
}
}
}
using IronOcr;
namespace DocumentScanner
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnCaptureClicked(object sender, EventArgs e)
{
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
try
{
// Request camera permissions
var status = await Permissions.RequestAsync<Permissions.Camera>();
if (status == PermissionStatus.Granted)
{
// Take photo
var photo = await MediaPicker.CapturePhotoAsync();
if (photo != null)
{
// Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(() => photo.OpenReadAsync().Result);
using (var stream = await photo.OpenReadAsync())
{
// Use a stream from the captured photo for OCR
var ocr = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(stream);
var ocrResult = ocr.Read(ocrInput);
if (string.IsNullOrEmpty(ocrResult.Text))
{
await DisplayAlert("Error", "No Text Detected!", "OK");
}
else
{
await DisplayAlert("Text Detected!", ocrResult.Text, "OK");
// Display extracted text
textLabel.Text = ocrResult.Text;
}
}
}
}
else
{
// Camera permission denied
await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK");
}
}
catch (Exception ex)
{
// Handle exception
await DisplayAlert("Error", ex.Message, "OK");
}
}
}
}
Imports IronOcr
Namespace DocumentScanner
Partial Public Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
End Sub
Private Async Sub OnCaptureClicked(ByVal sender As Object, ByVal e As EventArgs)
License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
Try
' Request camera permissions
Dim status = Await Permissions.RequestAsync(Of Permissions.Camera)()
If status = PermissionStatus.Granted Then
' Take photo
Dim photo = Await MediaPicker.CapturePhotoAsync()
If photo IsNot Nothing Then
' Display captured photo in Image
cameraPreview.Source = ImageSource.FromStream(Function() photo.OpenReadAsync().Result)
Using stream = Await photo.OpenReadAsync()
' Use a stream from the captured photo for OCR
Dim ocr = New IronTesseract()
Dim ocrInput As New OcrInput()
ocrInput.LoadImage(stream)
Dim ocrResult = ocr.Read(ocrInput)
If String.IsNullOrEmpty(ocrResult.Text) Then
Await DisplayAlert("Error", "No Text Detected!", "OK")
Else
Await DisplayAlert("Text Detected!", ocrResult.Text, "OK")
' Display extracted text
textLabel.Text = ocrResult.Text
End If
End Using
End If
Else
' Camera permission denied
Await DisplayAlert("Permission Denied", "Camera permission is required to capture photos.", "OK")
End If
Catch ex As Exception
' Handle exception
Await DisplayAlert("Error", ex.Message, "OK")
End Try
End Sub
End Class
End Namespace
コードをステップバイステップで分解しましょう:
テキストが正常に抽出された場合、textLabelという名前のLabelコントロールに表示します。 テキストが検出されない場合、DisplayAlert を使用してエラーメッセージを表示します。
IronOCRのより堅牢な利用およびコードの詳細については、こちらをご覧くださいコード例ページ
このチュートリアルに従うことで、.NET MAUIでIronOCRドキュメントスキャナーSDKの使用方法を学びました。 ドキュメントスキャンアプリには、紙のドキュメントのデジタル化や、領収書や請求書から保存された情報を抽出するなど、実用的な用途が数多くあります。 IronOCR の強力な機能と .NET MAUI の柔軟性により、さまざまなユースケースに対応する多機能なドキュメントスキャナーアプリを構築できます。 さまざまな機能を試し、追加のライブラリを探求し、さらに技術を磨いて、より印象的なアプリを作成してください。
IronOCRの機能に関する詳細情報については、こちらをご覧くださいドキュメントページ
IronOCR は無料体験商用モードでその完全な機能をテストするために。 それは永続的な Lite です。ライセンス価格は $749 からです。ライブラリをダウンロードしてください:ダウンロードページにアクセスしてお試しください。
9つの .NET API製品 オフィス文書用