VB.Net Code to Get You Started

// Nuget PM> Install-Package IronOcr
using IronOcr;
var Result = new IronTesseract().Read(@"images\image.png").Text;
' Nuget PM> Install-Package IronOcr
Imports IronOcr
Private Result = (New IronTesseract()).Read("images\image.png").Text
IronOCR is unique in its ability to automatically detect and read text from imperfectly scanned images and PDF documents. The `IronTesseract` Class provides the simplest API.
Try Other code samples to gain fine-grained control of your C# OCR operations.
IronOCR provides the most advanced build of Tesseract known anywhere, on any platform. With increased speed, accuracy and a native DLL and API.
Supports Tesseract 3, Tesseract 4 and Tesseract 5 for .NET Framework, Standard, Core, Xamarin and Mono.

//PM> Install-Package IronOcr.Languages.Arabic
using IronOcr;
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Arabic;
using (var Input = new OcrInput(@"images\arabic.gif"))
{
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
///A more advanced Example
var Ocr2 = new IronTesseract();
Ocr2.UseCustomTesseractLanguageFile("custom_tesseract_files/custom.traineddata");
Ocr2.AddSecondaryLanguage(OcrLanguage.EnglishBest);
using (var Input = new OcrInput(@"images\mixed-lang.pdf"))
{
var Result = Ocr2.Read(Input);
Console.WriteLine(Result.Text);
}
'PM> Install-Package IronOcr.Languages.Arabic
Imports IronOcr
Private Ocr = New IronTesseract()
Ocr.Language = OcrLanguage.Arabic
Using Input = New OcrInput("images\arabic.gif")
Dim Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
End Using
'''A more advanced Example
Dim Ocr2 = New IronTesseract()
Ocr2.UseCustomTesseractLanguageFile("custom_tesseract_files/custom.traineddata")
Ocr2.AddSecondaryLanguage(OcrLanguage.EnglishBest)
Using Input = New OcrInput("images\mixed-lang.pdf")
Dim Result = Ocr2.Read(Input)
Console.WriteLine(Result.Text)
End Using
IronOCR supports 125 international languages.
Other than English which is installed by default, language packs may be added to your .NET project via Nuget or as downloads from our Languages Page.
Most Languages are available in Fast, Standard (recommended) and Best quality. Best may be more accurate, but also is slower.

using IronOcr;
using System.Drawing; //for image export
// 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/
var Ocr = new IronTesseract();
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
Ocr.Configuration.ReadBarCodes = true;
using (var Input = new OcrInput(@"example.tiff"))
{
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 dont set Ocr.Configuration.ReadBarCodes = true;
OcrResult.Barcode[] Barcodes = Page.Barcodes;
System.Drawing.Bitmap PageImage = Page.ToBitmap(Input);
int PageWidth = Page.Width;
int PageHeight = Page.Height;
int PagRotation = Page.Rotation; // angular correction in degrees from OcrInput.Deskew()
foreach (var Paragraph in Page.Paragraphs)
{
// Pages -> Paragraphs
int ParagraphNumber = Paragraph.ParagraphNumber;
String ParagraphText = Paragraph.Text;
System.Drawing.Bitmap ParagraphImage = Paragraph.ToBitmap(Input);
int ParagraphX_location = Paragraph.X;
int ParagraphY_location = Paragraph.Y;
int ParagraphWidth = Paragraph.Width;
int ParagraphHeight = Paragraph.Height;
double ParagraphOcrAccuracy = Paragraph.Confidence;
OcrResult.TextFlow paragrapthText_direction = Paragraph.TextDirection;
foreach (var Line in Paragraph.Lines)
{
// Pages -> Paragraphs -> Lines
int LineNumber = Line.LineNumber;
String LineText = Line.Text;
System.Drawing.Bitmap LineImage = Line.ToBitmap(Input); ;
int LineX_location = Line.X;
int LineY_location = 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;
System.Drawing.Image WordImage = Word.ToBitmap(Input);
int WordX_location = Word.X;
int WordY_location = 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 IsFancy = Word.Font.IsCaligraphic;
}
foreach (var Character in Word.Characters)
{
// Pages -> Paragraphs -> Lines -> Words -> Characters
int CharacterNumber = Character.CharacterNumber;
String CharacterText = Character.Text;
System.Drawing.Bitmap CharacterImage = Character.ToBitmap(Input);
int CharacterX_location = Character.X;
int CharacterY_location = Character.Y;
int CharacterWidth = Character.Width;
int CharacterHeight = Character.Height;
double CharacterOcrAccuracy = Character.Confidence;
// Output alternative symbols choices and their probability.
// Very useful for spellchecking
OcrResult.Choice[] Choices = Character.Choices;
}
}
}
}
}
}
Imports IronOcr
Imports System.Drawing 'for image export
' 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 = New IronTesseract()
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm
Ocr.Configuration.ReadBarCodes = True
Using Input = New OcrInput("example.tiff")
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 dont set Ocr.Configuration.ReadBarCodes = true;
Dim Barcodes() As OcrResult.Barcode = Page.Barcodes
Dim PageImage As System.Drawing.Bitmap = Page.ToBitmap(Input)
Dim PageWidth As Integer = Page.Width
Dim PageHeight As Integer = Page.Height
Dim PagRotation As Integer = Page.Rotation ' angular correction in degrees from OcrInput.Deskew()
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 ParagraphX_location As Integer = Paragraph.X
Dim ParagraphY_location As Integer = Paragraph.Y
Dim ParagraphWidth As Integer = Paragraph.Width
Dim ParagraphHeight As Integer = Paragraph.Height
Dim ParagraphOcrAccuracy As Double = Paragraph.Confidence
Dim paragrapthText_direction As OcrResult.TextFlow = 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 System.Drawing.Bitmap = Line.ToBitmap(Input)
Dim LineX_location As Integer = Line.X
Dim LineY_location 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 System.Drawing.Image = Word.ToBitmap(Input)
Dim WordX_location As Integer = Word.X
Dim WordY_location 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 IsFancy 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 System.Drawing.Bitmap = Character.ToBitmap(Input)
Dim CharacterX_location As Integer = Character.X
Dim CharacterY_location 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 spellchecking
Dim Choices() As OcrResult.Choice = Character.Choices
Next Character
Next Word
Next Line
Next Paragraph
Next Page
End Using
IronOCR returns an advanced result object for each page it scans using Tesseract 3,4 or 5. This contains location data, images, text, statistical confidence, alternative symbol choices, font-names, font-sizes decoration, font weights, and position for each:
- Page
- Paragraph
- Line of Text
- Word
- Individual Character
- and Barcode

Support From Our Team
For product or licensing queries, the Iron team are ready to support you. Send us your questions and we'll ensure the right person at Iron answers it for you.
Get in TouchOCR Images to Text in VB.Net Applications
One or multi pages can be sent to IronOCR. You'll receive all text, barcode, & QR content as a result. Add OCR functionality to .NET Console, Web, or Desktop Apps. Images can be submitted as PDF, JPG, PNG, GIF, BMP and TIFF.
See a Tutorials
OCR with Fast & Accurate Results
The Optical Character Recognition software views content in multiple font styles for accurate text OCR. Use rectangle read regions to improve speed and accuracy. Multi-core multi threading improves OCR reading speeds.
API Reference DocumenationImage Processing for Imperfect Scan Recognition
What really makes IronOCR special is its ability to read badly scanned documents. Its unique pre-processing library reduces background noise, rotation, distortion and skewed alignment as well as simplifying colours and enhancing resolution & contrast. Iron’s AutoOCR and Advanced OCR settings provide developers with the tools to achieve the best possible results, every time.
Learn More
Multi-lingual OCR
Language packs available for: Arabic, Simplified Chinese, Traditional Chinese, Danish, English, Finnish, French, German, Hebrew, Italian, Japanese, Korean, Portuguese, Russian, Spanish, and Swedish. Other languages can be supported by request.
Learn MoreData Exported Directly to Your VB.Net Application
IronOCR outputs content as plain text and barcode data. An alternative structured data object model allows developers to receive all content in the format of structured Headings, Paragraphs, Lines, Words and Characters for input directly into .NET applications.
Learn MoreSupports:
Licensing & Pricing
Free community development licenses. Commercial licenses from $499.

Project

Developer

Organization

Agency

SaaS

OEM
VB.NET Optical Character Recognition Tutorials

C# Tesseract OCR

IronOCR and Tesseract Comparison for .Net
Jim has been a leading figure in development of IronOCR. Jim designs and builds image processing algorithms and reading methods for OCR.
See Jim's Tesseract Comparison
C# OCR ASP.NET

How to Read Text from an Image in C# .Net
Learn how Gemma's team use IronOCR to read text from images for their archiving software. Gemma shares her own code samples.
View Gemma's Image to Text TutorialVB Coders use IronOcr for...
Accounting and Finance Systems
- # Receipts
- # Reporting
- # Invoice Printing
Business Digitization
- # Documentation
- # Ordering & Labelling
- # Paper Replacement

Enterprise Content Management
- # Content Production
- # Document Management
- # Content Distribution

Data and Reporting Applications
- # Performance Tracking
- # Trend Mapping
- # Reports

Thousands of corporations, governments, SMEs and developers alike trust Iron software products.
Iron's team have over 10 years experience in the .NET software component market.