예제 #1
0
        public List <TestResult> CheckCommodityExtractor(string infoFile)
        {
            List <TestResult> results = new List <TestResult>();

            CaptureInfo  info = CaptureInfo.Deserialize("Test\\" + infoFile);
            UnsafeBitmap bm   = new UnsafeBitmap("Test\\" + info.BitmapFile);

            ppocr.ClearErrors();

            DateTime dtStart = DateTime.Now;

            Rectangle commodArea = ppocr.FindCommodityArea(bm);

            if (commodArea != info.CommodityRect)
            {
                results.Add(new TestResult(infoFile, "Commodity Rect Expected " + info.CommodityRect.ToString() + ", got " + commodArea.ToString()));
                return(results);
            }

            string island = ppocr.ExtractIslandName(bm);

            if (!island.Equals(info.Island))
            {
                results.Add(new TestResult(infoFile, "Expected island name: " + info.Island + ", Got: " + island));
            }

            List <Commodity> commodities = ppocr.ExtractCommodities(bm, commodArea);

            if (ppocr.Error.Length > 0)
            {
                results.Add(new TestResult(infoFile, ppocr.Error));
            }

            List <Commodity> refCommods = info.Commodities;

            if (refCommods.Count != commodities.Count)
            {
                results.Add(new TestResult(infoFile, "Commodities Count is " + commodities.Count.ToString() + ", expected " + refCommods.Count.ToString()));
            }

            for (int i = 0; i < refCommods.Count && i < commodities.Count; i++)
            {
                if (!commodities[i].ToString().Equals(refCommods[i].ToString()))
                {
                    results.Add(new TestResult(infoFile, "Expected: " + refCommods[i].ToString() + " Got: " + commodities[i].ToString()));
                }
            }

            DateTime dtStop = DateTime.Now;

            if (results.Count <= 0)
            {
                TestResult result = new TestResult(infoFile, "PASS");
                result.Duration = dtStop.Subtract(dtStart).TotalSeconds.ToString();
                results.Add(result);
            }

            return(results);
        }
예제 #2
0
        private void mnuToolsOCRBitmapFile_Click(object sender, EventArgs e)
        {
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                CleanupDebugFiles();

                PPOcr ppocr = new PPOcr(null);

                UnsafeBitmap bm = new UnsafeBitmap(openFileDialog.FileName);

                ppocr.ClearErrors();

                Rectangle commodArea = ppocr.FindCommodityArea(bm);
                string    island     = ppocr.ExtractIslandName(bm);

                if (island == null || island.Length <= 0)
                {
                    MessageBox.Show(this, "Can't find island name", Application.ProductName);
                }

                labelTitle.Text = "Island: " + island;

                List <Commodity> commodities = ppocr.ExtractCommodities(bm, commodArea);
                if (ppocr.Error.Length > 0)
                {
                    MessageBox.Show(this, ppocr.Error, Application.ProductName);
                }

                if (commodities == null || commodities.Count <= 0)
                {
                    dataGridView1.DataSource = null;
                }
                else
                {
                    dataGridView1.DataSource = new List <Commodity>(commodities);
                }
            }
        }