Ejemplo n.º 1
0
        private void button3_Click(object sender, EventArgs e)
        {
            if (this.SelectedRow != -1)
            {
                if (cmbOmrType.SelectedValue == null)
                {
                    MessageBox.Show("OMR種別を選択してください。");
                }

                PictureBox pic = this.tableLayoutPanel1.GetControlFromPosition(1, this.SelectedRow) as PictureBox;
                if (pic == null)
                {
                    return;
                }

                Image resultImg = pic.Image;

                TransArea area = (TransArea)pic.Tag;

                Image     masterImage = this.TargetImage;
                Rectangle masterArea  = area.TransRect;

                OcrSDK ocrSdk = new OcrSDK();

                DocumentSDKCheckType omrType = (DocumentSDKCheckType)cmbOmrType.SelectedValue;

                Rectangle markArea = new Rectangle()
                {
                    X      = area.CharRect.X - area.TransRect.X,
                    Y      = area.CharRect.Y - area.TransRect.Y,
                    Width  = area.CharRect.X - area.TransRect.X + area.CharRect.Width,
                    Height = area.CharRect.Y - area.TransRect.Y + area.CharRect.Height,
                };
                if (omrType == DocumentSDKCheckType.OMR_CT_UNKNOWN)
                {
                    markArea = new Rectangle()
                    {
                        X      = 0,
                        Y      = 0,
                        Width  = area.TransRect.Width - 1,
                        Height = area.TransRect.Height - 1,
                    };
                }
                var result = ocrSdk.executeOmr(resultImg, omrType, markArea, masterImage, masterArea);

                this.txtResult.Text = string.Format("Check_res:{0} \n Score:{1}", result.one_res[0].check_res.ToString(), result.one_res[0].score);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// OMR認識処理
        /// </summary>
        /// <param name="itemImage">項目画像</param>
        /// <param name="recogItem">認識対象情報</param>
        /// <returns>OMR認識結果</returns>
        public DocumentSDKOmrResult executeOmr(Image itemImage, DocumentSDKCheckType markType, Rectangle markArea, Image masterImg, Rectangle masterRect)
        {
            IDocumentSDKComponent documentSDK = DocumentSDKFactory.GetDocumentSDK();
            FileStream            stream      = null;
            Image masterImage = null;
            List <DocumentSDKArea> areaList       = new List <DocumentSDKArea>();
            List <DocumentSDKArea> masterAreaList = null;

            try
            {
                // OMRパラメーターの設定
                DocumentSDKOmrParam param = new DocumentSDKOmrParam()
                {
                    check_num    = DocumentSDKDefinition.OMR_CN_UNKNOWN,
                    check_type   = markType,
                    threshold    = SByte.Parse("50"),
                    area_type    = DocumentSDKAreaType.OMR_AT_SOLID,
                    around_area  = DocumentSDKAroundArea.OMR_AA_UNKNOWN,
                    check_size_x = DocumentSDKDefinition.OMR_CS_UNKNOWN,
                    check_size_y = DocumentSDKDefinition.OMR_CS_UNKNOWN,
                };

                // OMR領域を設定(文字領域を抽出され場合、OCRの文字領域を使用する)
                DocumentSDKArea area = new DocumentSDKArea()
                {
                    xs = markArea.Left,
                    ys = markArea.Top,
                    xe = markArea.Left + markArea.Width - 1,
                    ye = markArea.Top + markArea.Height - 1,
                };
                areaList.Add(area);
                if (markType == DocumentSDKCheckType.OMR_CT_UNKNOWN)
                {
                    masterImage    = masterImg;
                    masterAreaList = new List <DocumentSDKArea>();
                    DocumentSDKArea masterArea = new DocumentSDKArea()
                    {
                        xs = masterRect.X,
                        ys = masterRect.Y,
                        xe = masterRect.X + masterRect.Width,
                        ye = masterRect.Y + markArea.Height,
                    };
                    masterAreaList.Add(masterArea);
                }

                // OMR処理の実行
                DocumentSDKOmrResult result = documentSDK.ExecuteOmr(itemImage, areaList, masterImage, masterAreaList, param);

                return(result);
            }
            finally
            {
                // ファイルストリームの破棄
                if (stream != null)
                {
                    stream.Dispose();
                }
                // マスター画像の破棄
                if (masterImage != null)
                {
                    masterImage.Dispose();
                }
            }
        }