VB.Net Code to Get You Started

C# + VB.Net: AutoOcr AutoOcr
// 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.

C# + VB.Net: Intl. Languages Intl. Languages
//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);

///A more advanced Example

var Ocr2 = new IronTesseract();

using (var Input = new OcrInput(@"images\mixed-lang.pdf"))
    var Result = Ocr2.Read(Input);
'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)
End Using

'''A more advanced Example

Dim Ocr2 = New IronTesseract()

Using Input = New OcrInput("images\mixed-lang.pdf")
	Dim Result = Ocr2.Read(Input)
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.

C# + VB.Net: Results Objects Results Objects
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;
        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
		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 and weights, rotation 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 Touch

OCR 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.

Made for VB.Net, .Net, C#

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 Documenation

Image 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 More

Data 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 More
  • .Net Framework 4.0 and above support C#, VB, F#
  • Microsoft Visual Studio. .Net Development IDE Icon
  • Nuget Installer Support for Visual Studio
  • JetBrains ReSharper C# language assistant compatible
  • Microsoft Azure C# .NET  hosting platform compatible

Licensing & Pricing

Free community development licenses. Commercial licenses from $399.

Project C# + VB.NET Library Licensing


Developer C# + VB.NET Library Licensing


Organization C# + VB.NET Library Licensing


Agency C# + VB.NET Library Licensing


SaaS C# + VB.NET Library Licensing


OEM C# + VB.NET Library Licensing


View Full License Options  

VB.NET Optical Character Recognition Tutorials

Tesseract Tutorial for C# | IronOCR

C# Tesseract OCR

Jim Baker is a development engineer at Iron developing for the OCR product

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
How to Read Text from an Image in .Net | Tutorial


Gemma Beckford - Microsoft Solutions Engineer

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 Tutorial
VB Coders use IronOcr for...

Accounting and Finance Systems

  • # Receipts
  • # Reporting
  • # Invoice Printing
Add PDF Support to ASP.Net Accounting and Finance Systems

Business Digitization

  • # Documentation
  • # Ordering & Labelling
  • # Paper Replacement
C# Business Digitization Use Cases

Enterprise Content Management

  • # Content Production
  • # Document Management
  • # Content Distribution
.Net CMS PDF Support

Data and Reporting Applications

  • # Performance Tracking
  • # Trend Mapping
  • # Reports
C# PDF Reports
Join Them Today
Iron .Net Customers

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.