Пример #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);
     }
 }
Пример #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);
        }
Пример #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}");
                    }
        }
Пример #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));
                    }
                }
            }
        }
Пример #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();
                    }
                }
            }
        }
Пример #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));
             }
         }
     }
 }
Пример #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");
                }
            }
        }
Пример #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);
                }
            }
        }
Пример #12
0
        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());
                    }
        }
Пример #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);
             }
         }
     }
 }
Пример #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");
                }
            }
        }
Пример #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);
        }
Пример #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));
        }
Пример #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));
                    }
                }
            }
        }
Пример #18
0
        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);
        }
Пример #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));
            }
        }
Пример #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());
             }
         }
     }
 }
Пример #21
0
        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());
     }
 }
Пример #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();
            }
        }
Пример #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);
                }
        }
Пример #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));
                    }
                }
            }
        }
Пример #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));
                    }
                }
            }
        }
Пример #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);
                }
            }
        }
Пример #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);
                }
            }
        }