コード例 #1
0
ファイル: OCRImages.cs プロジェクト: langbotian/VietOCR3.NET
 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);
     }
 }
コード例 #2
0
 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
ファイル: MainWindow.xaml.cs プロジェクト: cout00/poebot
        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);
            }
        }
コード例 #10
0
        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");
                }
            }
        }
コード例 #11
0
        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
ファイル: PixExtensions.cs プロジェクト: redbaty/EzOCR
        /// <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
ファイル: EngineTests.cs プロジェクト: songz2000/tesseract
        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
ファイル: PixATests.cs プロジェクト: Stafil0/forked-tesseract
        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));
                    }
                }
            }
        }
コード例 #22
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("");
            }
        }
コード例 #24
0
        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
ファイル: EngineTests.cs プロジェクト: songz2000/tesseract
        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
ファイル: EngineTests.cs プロジェクト: songz2000/tesseract
        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));
                    }
                }
            }
        }
コード例 #29
0
        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
ファイル: Program.cs プロジェクト: islomkhon/AHDSystem
        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);
                }
            }
        }