Exemple #1
0
 private PixArray LoadPixArray(string filename)
 {
     if (filename.ToLower().EndsWith(".tif") || filename.ToLower().EndsWith(".tiff"))
     {
         return(PixArray.LoadMultiPageTiffFromFile(filename));
     }
     else
     {
         PixArray pixA = PixArray.Create(0);
         pixA.Add(Pix.LoadFromFile(filename));
         return(pixA);
     }
 }
 private PixArray ReadImageFileIntoPixArray(string filename)
 {
     if (filename.ToLower().EndsWith(".tif") || filename.ToLower().EndsWith(".tiff"))
     {
         return(PixArray.LoadMultiPageTiffFromFile(filename));
     }
     else
     {
         PixArray pa = PixArray.Create(0);
         pa.Add(Pix.LoadFromFile(filename));
         return(pa);
     }
 }
Exemple #3
0
        public static string GetTextFromImage(string imagePath)
        {
            string text;

            using (var image = Pix.LoadFromFile(imagePath))
            {
                using (var page = _tesseractEngine.Process(image))
                {
                    text = page.GetText();
                }
            }
            return(text);
        }
Exemple #4
0
        static void Main(string[] args)
        {
            var path = args[0];

            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
                using (var img = Pix.LoadFromFile(path))
                    using (var page = engine.Process(img))
                    {
                        var text = page.GetText();
                        Console.WriteLine("Mean confidence: {0}", page.GetMeanConfidence());
                        Console.WriteLine($"Text: \r\n{text}");
                    }
        }
Exemple #5
0
        public void CanParseText_UsingMode(PageSegMode mode, String expectedText)
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                var demoFilename = String.Format("./Data/Ocr/PSM_{0}.png", mode);
                using (var pix = Pix.LoadFromFile(demoFilename)) {
                    using (var page = engine.Process(pix, mode)) {
                        var text = page.GetText().Trim();

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
Exemple #6
0
        public MainWindow()
        {
            InitializeComponent();
            var path = @"D:\Безымянный.png";

            using (var engine = new TesseractEngine(@"D:\tessdata", "eng", EngineMode.Default)) {
                engine.SetVariable("tessedit_char_whitelist", "0123456789");
                using (var img = Pix.LoadFromFile(path)) {
                    using (var page = engine.Process(img)) {
                        var text = page.GetText();
                    }
                }
            }
        }
Exemple #7
0
 public string GetImageText(string imagePath)
 {
     using (var engine = new TesseractEngine(@"./Data/tessdata", "eng", EngineMode.Default))
     {
         using (var pix = Pix.LoadFromFile(imagePath))
         {
             using (var page = engine.Process(pix))
             {
                 string text = page.GetText();
                 return((page.GetText().Trim().Length == 0) ? "null" : StringUtils.CleanMyString(text));
             }
         }
     }
 }
Exemple #8
0
        public void OtsuBinarizationTest()
        {
            var sourcePixFilename = TestFilePath(@"Binarization\neo-8bit.png");

            using (var sourcePix = Pix.LoadFromFile(sourcePixFilename))
            {
                using (var binarizedImage = sourcePix.BinarizeOtsuAdaptiveThreshold(200, 200, 10, 10, 0.1F))
                {
                    Assert.That(binarizedImage, Is.Not.Null);
                    Assert.That(binarizedImage.Handle, Is.Not.EqualTo(IntPtr.Zero));
                    SaveResult(binarizedImage, "binarizedOtsuImage.png");
                }
            }
        }
Exemple #9
0
        public async Task <bool> LoadImage(string filename)
        {
            try
            {
                _imagePix = await Task.Run(() => Pix.LoadFromFile(filename));

                return(_imagePix != null);
            }
            catch (Exception e)
            {
                MessageBox.Show("Error: " + e, "Info", MessageBoxButtons.OK);
                return(false);
            }
        }
        public void DescewTest()
        {
            using (var sourcePix = Pix.LoadFromFile(@".\Data\Scew\scewed-phototest.png"))
            {
                Scew scew;
                using (var descewedImage = sourcePix.Deskew(new ScewSweep(range: 45), Pix.DefaultBinarySearchReduction, Pix.DefaultBinaryThreshold, out scew))
                {
                    Assert.That(scew.Angle, Is.EqualTo(-9.953125F).Within(0.00001));
                    Assert.That(scew.Confidence, Is.EqualTo(3.782913F).Within(0.00001));

                    SaveResult(descewedImage, "descewedImage.png");
                }
            }
        }
        public void Rotate_ShouldBeAbleToRotateImageByXDegrees(float angle)
        {
            const string FileNameFormat = "rotation_{0}degrees.jpg";
            float        angleAsRadians = (float)(angle * Math.PI / 180.0f);

            using (var sourcePix = Pix.LoadFromFile(@".\Data\Conversion\photo_rgb_32bpp.tif")) {
                using (var result = sourcePix.Rotate(angleAsRadians, RotationMethod.AreaMap))
                {
                    // TODO: Visualy confirm successful rotation and then setup an assertion to compare that result is the same.
                    var filename = String.Format(FileNameFormat, angle);
                    SaveResult(result, filename);
                }
            }
        }
        private void button5_Click(object sender, EventArgs e)
        {
            string putanja  = @"../../../tessdata";
            string imageDir = @"../../../staticimages/Arial10.PNG";

            using (var engine = new TesseractEngine(putanja, "eng", EngineMode.Default))
                using (var image = Pix.LoadFromFile(imageDir))
                    using (var page = engine.Process(image))
                    {
                        string text = page.GetText();
                        consoleTab2.Text  = text + Environment.NewLine;
                        consoleTab2.Text += "Mean confidence: " + String.Format("{0:P}", page.GetMeanConfidence());
                    }
        }
Exemple #13
0
 private string DetectText()
 {
     using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
     {
         using (var img = Pix.LoadFromFile(FileName))
         {
             using (var page = engine.Process(img))
             {
                 var text = page.GetText();
                 return(text);
             }
         }
     }
 }
Exemple #14
0
        public void DespeckleTest()
        {
            var sourcePixFilename = TestFilePath(@"processing\w91frag.jpg");

            using (var sourcePix = Pix.LoadFromFile(sourcePixFilename))
            {
                // remove speckles
                using (var result = sourcePix.Despeckle(Pix.SEL_STR2, 2))
                {
                    // TODO: Visualy confirm successful despeckle and then setup an assertion to compare that result is the same.
                    SaveResult(result, "w91frag-despeckled.png");
                }
            }
        }
Exemple #15
0
        public static void Main(string[] args)
        {
            string testImagePath;

            if (args.Length > 0)
            {
                testImagePath = args[0];
            }
            else
            {
                testImagePath = "../../cms_1500_02-12.png";
            }

            try
            {
                using (var engine = new TesseractEngine(@"C:\Users\Chris\Documents\GitHub\ComboTessFormSharp\ConsoleDemo\", "eng", EngineMode.TesseractAndCube))
                {
                    var imageFile = System.Drawing.Image.FromFile(testImagePath);
                    if (imageFile.GetFrameCount(System.Drawing.Imaging.FrameDimension.Page) > 1)
                    {
                        using (var imgPages = PixArray.LoadMultiPageTiffFromFile(testImagePath))
                        {
                            int pageNum = 1;
                            foreach (Tesseract.Pix img in imgPages)
                            {
                                processImage(engine, img, testImagePath, pageNum);
                                pageNum++;
                            }
                        }
                    }
                    else
                    {
                        using (var img = Pix.LoadFromFile(testImagePath))
                        {
                            processImage(engine, img, testImagePath, 1);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Trace.TraceError(e.ToString());
                Console.WriteLine("Unexpected Error: " + e.Message);
                Console.WriteLine("Details: ");
                Console.WriteLine(e.ToString());
            }
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
Exemple #16
0
        /// <summary>
        /// Converts stream to a Pix image by using the file on a file stream or by using a temporary file.
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static Pix ConvertToPix(this Stream stream)
        {
            if (stream is FileStream fileStream && File.Exists(fileStream.Name))
            {
                return(Pix.LoadFromFile(fileStream.Name));
            }

            using var temporaryFile = new TemporaryFile();
            using var writeStream   = temporaryFile.OpenWriteStream();
            stream.CopyTo(writeStream);
            stream.Close();
            writeStream.Close();

            return(Pix.LoadFromFile(temporaryFile.FullPath));
        }
Exemple #17
0
        public void CanProcessPix()
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                using (var img = Pix.LoadFromFile("./phototest.tif")) {
                    using (var page = engine.Process(img)) {
                        var text = page.GetText();

                        const string expectedText =
                            "This is a lot of 12 point text to test the\nocr code and see if it works on all types\nof file format.\n\nThe quick brown dog jumped over the\nlazy fox. The quick brown dog jumped\nover the lazy fox. The quick brown dog\njumped over the lazy fox. The quick\nbrown dog jumped over the lazy fox.\n\n";

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
        public string GetText(string fileName)
        {
            string result = string.Empty;

            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
            {
                var pix = Pix.LoadFromFile(fileName);
                using (var page = engine.Process(pix))
                {
                    result = page.GetText();
                }
            }

            return(result);
        }
Exemple #19
0
        public void CanRemovePixFromArray()
        {
            var sourcePixPath = TestFilePath(@"Ocr\phototest.tif");

            using (var pixA = PixArray.Create(0))
            {
                using (var sourcePix = Pix.LoadFromFile(sourcePixPath))
                {
                    pixA.Add(sourcePix);
                }

                pixA.Remove(0);
                Assert.That(pixA.Count, Is.EqualTo(0));
            }
        }
Exemple #20
0
 /// <summary>
 /// 从小图片识别文字
 /// </summary>
 /// <param name="imgPath"></param>
 /// <returns></returns>
 public static string ImageToText(string imgPath)
 {
     /*--我装中文的包了吗?????--*/
     using (var engine = new TesseractEngine(@"D:\XD\1-dis\tesseractdemo\tesseractdemo\tessdata", "chi_sim", EngineMode.Default))
     {
         engine.SetVariable("user_defined_dpi", "300");
         using (var img = Pix.LoadFromFile(imgPath))
         {
             using (var page = engine.Process(img))
             {
                 return(page.GetText());
             }
         }
     }
 }
        public static string AnalyzeFileHOCR(string p, string fileName)
        {
            var data = System.IO.Path.Combine(p, "tessdata");

            using (var engine = new TesseractEngine(data, "fra", EngineMode.Default))
            {
                using (var img = Pix.LoadFromFile(fileName))
                {
                    using (var page = engine.Process(img))
                    {
                        return(page.GetHOCRText(0));
                    }
                }
            }
        }
 public String readFromImage(string imagePath)   // Make this asynchronous
 //var TESSDATA_PREFIX = ;
 {
     try {
         //NOTE: This filepath needs to be altered for it to work on your machine, change it to where your .tessdata folder (which contains the eng.traineddata file in this project's directory) is
         //We need to have this installed in ProgramFiles via the .msi so there can be a fixed location.
         TesseractEngine tesseractEngineInstance = new TesseractEngine(@"C:\DEV\AutomatedBusinessProcessTrackingAnalysis\TimeTracker.View\tessdata", "eng", EngineMode.Default);
         Pix             img  = Pix.LoadFromFile(imagePath); //Change to var, maybe?
         Page            page = tesseractEngineInstance.Process(img);
         String          text = page.GetText();
         return(text);
     } catch (Exception e) {
         return("Unable to read " + imagePath + ". Reason: " + e.ToString());
     }
 }
Exemple #23
0
        public static string ExtractText(string path)
        {
            try
            {
                tesseractEngine = new TesseractEngine(@".\tessdata", "eng", EngineMode.Default);

                var result = tesseractEngine.Process(Pix.LoadFromFile(path), PageSegMode.Auto);

                return(result.GetText().Trim());
            } catch (Exception ex)
            {
                Log.E(ex.StackTrace);
                return("");
            }
        }
        private void LoadButton_OnClick(object sender, RoutedEventArgs e)
        {
            var fileDialog = new OpenFileDialog();
            var showDialog = fileDialog.ShowDialog();

            if (showDialog != null && showDialog.Value)
            {
                //@"D:\HandwriteExpressionRecognition\HandwriteExpressionRecognition\HandwriteExpressionRecognition.Desktop\TestData\123456789.bmp"
                var tessEngine = new Tesseract.TesseractEngine("tessdata", "eng", EngineMode.Default);
                var page       = tessEngine.Process(
                    Pix.LoadFromFile(fileDialog.FileName),
                    PageSegMode.Auto);
                TextBlock.Text = page.GetText();
            }
        }
Exemple #25
0
        public override OcrResult ProcessOcr(string path, HashSet <string> candidates)
        {
            var ocrResult = new OcrResult();

            FilePath filePath = path;

            using (var bitMap = new Bitmap(filePath))
            {
                using (var extendedBitmap = ExtendImage(bitMap))
                {
                    extendedBitmap.Save(filePath.GetDirPath() + @"tempExtended.bmp");
                }
            }

            using (var pix = Pix.LoadFromFile(filePath.GetDirPath() + @"tempExtended.bmp"))
                using (var page = Engine.Process(pix))
                {
                    var    text     = page.GetText();
                    var    match    = string.Empty;
                    double maxScore = 0;
                    text = text.Replace(@"\n", string.Empty).Trim();
                    foreach (var candidate in candidates)
                    {
                        var score = 1 - (double)DamerauLevenshteinDistance(text, candidate.ToUpper(), candidate.Length / 2) /
                                    candidate.Length;
                        if (score < 0)
                        {
                            continue;
                        }

                        if (maxScore < score)
                        {
                            maxScore = score;
                            match    = candidate;
                        }
                    }
                    ocrResult.Results[match] = new MatchResult
                    {
                        Key     = text,
                        Value   = match,
                        InDoubt = maxScore <0.9,
                                            Score = (int)(maxScore * 100),
                                            Trustable = maxScore> 0.9,
                        FullyTrustable = maxScore > 0.95
                    };
                    return(ocrResult);
                }
        }
Exemple #26
0
        public void CanSetClassifyBlnNumericModeVariable()
        {
            using (var engine = CreateEngine()) {
                engine.SetVariable("classify_bln_numeric_mode", 1);

                using (var img = Pix.LoadFromFile(TestFilePath("./processing/numbers.png"))) {
                    using (var page = engine.Process(img)) {
                        var text = page.GetText();

                        const string expectedText = "1234567890\n\n";

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
Exemple #27
0
        public void CanParseUznFile()
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                var inputFilename = TestFilePath(@"Ocr\uzn-test.png");
                using (var img = Pix.LoadFromFile(inputFilename)) {
                    using (var page = engine.Process(img, inputFilename, PageSegMode.SingleLine)) {
                        var text = page.GetText();

                        const string expectedText =
                            "This is another test\n\n";

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
Exemple #28
0
        public void CanSetClassifyBlnNumericModeVariable()
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                engine.SetVariable("classify_bln_numeric_mode", 1);

                using (var img = Pix.LoadFromFile("./Data/processing/numbers.png")) {
                    using (var page = engine.Process(img)) {
                        var text = page.GetText();

                        const string expectedText = "1234567890\n\n";

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
        public void Scale_RGB_ShouldBeScaledBySpecifiedFactor(
            [Values(0.25f, 0.5f, 0.75f, 1, 1.25f, 1.5f, 1.75f, 2, 4, 8)]  float scale)
        {
            const string FileNameFormat = "scale_{0}.jpg";

            using (var sourcePix = Pix.LoadFromFile(@".\Data\Conversion\photo_rgb_32bpp.tif")) {
                using (var result = sourcePix.Scale(scale, scale)) {
                    Assert.That(result.Width, Is.EqualTo((int)Math.Round(sourcePix.Width * scale)));
                    Assert.That(result.Height, Is.EqualTo((int)Math.Round(sourcePix.Height * scale)));

                    // TODO: Visualy confirm successful rotation and then setup an assertion to compare that result is the same.
                    var filename = String.Format(FileNameFormat, scale);
                    SaveResult(result, filename);
                }
            }
        }
Exemple #30
0
        static void Main(string[] args)
        {
            string imagePath      = @"C:\Users\Monin.Jose\Pictures\imgpsh_mobile_save.jpg";//AppDomain.CurrentDomain.BaseDirectory + @"\images\ocrtest.jpg";
            string tessDataFolder = @"C:\Program Files\Tesseract-OCR\tessdata";
            string result         = "";

            using (var engine = new TesseractEngine(tessDataFolder, "eng", EngineMode.Default))
            {
                using (var img = Pix.LoadFromFile(imagePath))
                {
                    var page = engine.Process(img);
                    result = page.GetText();
                    Console.WriteLine(result);
                }
            }
        }