In This Topic
Programming / OCR / How to automatically rotate pages of a multipage TIFF file using OCR

How to automatically rotate pages of a multipage TIFF file using OCR

In This Topic

This is how to automatically rotate pages of a multipage TIFF file with help of OCR Tesseract engine method. After the successful rotation of all pages the source file is saved to the destination file.

Copy Code
'We assume that GdPicture has been correctly installed and unlocked.
Dim filepath As String = "multipage.tif"
Dim destpath As String = "output.tif"
'Specify your path.
Dim DICT_PATH As String = "C:\GdPicture.NET 14\Redist\OCR"
'Specify your language.
Dim LANG As OCRLanguage = OCRLanguage.English

Dim status As GdPictureStatus
Using gdpictureImaging As New GdPictureImaging()
    Dim hasRotation As Boolean = False
    Dim imageID As Integer = gdpictureImaging.CreateGdPictureImageFromFile(filepath)
    status = gdpictureImaging.GetStat()
    If status = GdPictureStatus.OK Then
        Dim pageCount As Integer = gdpictureImaging.GetPageCount(imageID)
        For i As Integer = 1 To pageCount
            status = gdpictureImaging.SelectPage(imageID, i)
            If status = GdPictureStatus.OK Then
                Using gdpictureOCR As GdPictureOCR = New GdPictureOCR()
                    gdpictureOCR.ResourceFolder = DICT_PATH
                    gdpictureOCR.AddLanguage(LANG)
                    status = gdpictureOCR.SetImage(imageID)
                    Dim pageRotation As Integer = gdpictureOCR.GetOrientation()
                    If pageRotation <> 0 Then
                        hasRotation = True
                        status = gdpictureImaging.RotateAngle(imageID, 360 - pageRotation)
                    End If
                End Using
            End If
            If status <> GdPictureStatus.OK Then
                MessageBox.Show("Error: " + status, "Rotation + OCR Example", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Exit For
            End If
        Next
        If status = GdPictureStatus.OK Then
            If hasRotation Then
                status = gdpictureImaging.TiffSaveMultiPageToFile(imageID, destpath, TiffCompression.TiffCompressionAUTO)
                If status = GdPictureStatus.OK Then
                    MessageBox.Show("Done!", "Rotation + OCR Example", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Else
                    MessageBox.Show("Error: " + status, "Rotation + OCR Example", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
            Else
                System.IO.File.Copy(filepath, destpath)
            End If
        End If
        gdpictureImaging.ReleaseGdPictureImage(imageID)
    End If
End Using                    
Copy Code
//We assume that GdPicture has been correctly installed and unlocked.
string filepath = "multipage.tif";
string destpath = "output.tif";
string DICT_PATH = "C:\\GdPicture.NET 14\\Redist\\OCR"; //Specify your path.
OCRLanguage LANG = OCRLanguage.English; //Specify your language.

GdPictureStatus status;
using (GdPictureImaging gdpictureImaging = new GdPictureImaging())
{
    bool hasRotation = false;
    int imageID = gdpictureImaging.CreateGdPictureImageFromFile(filepath);
    status = gdpictureImaging.GetStat();
    if (status == GdPictureStatus.OK)
    {
        int pageCount = gdpictureImaging.GetPageCount(imageID);
        for (int i = 1; i <= pageCount; i++)
        {
            status = gdpictureImaging.SelectPage(imageID, i);
            if (status == GdPictureStatus.OK)
            {
                using (GdPictureOCR gdpictureOCR = new GdPictureOCR())
                {
                    gdpictureOCR.ResourceFolder = DICT_PATH;
                    gdpictureOCR.AddLanguage(LANG);
                    status = gdpictureOCR.SetImage(imageID);
                    int pageRotation = gdpictureOCR.GetOrientation();
                    if (pageRotation != 0)
                    {
                        hasRotation = true;
                        status = gdpictureImaging.RotateAngle(imageID, 360 - pageRotation);
                    }
                }
            }
            if (status != GdPictureStatus.OK)
            {
                MessageBox.Show("Error: " + status, "Rotation + OCR Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
                break;
            }
        }
        if (status == GdPictureStatus.OK)
        {
            if (hasRotation)
            {
                status = gdpictureImaging.TiffSaveMultiPageToFile(imageID, destpath, TiffCompression.TiffCompressionAUTO);
                if (status == GdPictureStatus.OK)
                    MessageBox.Show("Done!", "Rotation + OCR Example", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                    MessageBox.Show("Error: " + status, "Rotation + OCR Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                System.IO.File.Copy(filepath, destpath);
            }
        }
        gdpictureImaging.ReleaseGdPictureImage(imageID);
    }
}