Beispiel #1
0
 public TableRulesForm(TableFormField tableFormField)
 {
     InitializeComponent();
     _tableFormField = tableFormField;
     _oldTableRules  = tableFormField.Rules;
     RulesChanged    = false;
     UpdateUI();
 }
Beispiel #2
0
        private void _fieldResults_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            try
            {
                if (_fieldResults.Rows.Count > 0 && _fieldResults.SelectedRows.Count == 1)
                {
                    int formIndex  = _cmbSelectedForm.SelectedIndex;
                    int pageIndex  = _cmbSelectedPage.SelectedIndex;
                    int fieldIndex = _fieldResults.SelectedRows[0].Index;

                    if (_filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex] is TextFormField ||
                        _filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex] is OmrFormField ||
                        _filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex] is UnStructuredTextFormField
#if LEADTOOLS_V20_OR_LATER
                        || _filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex] is OmrAnswerAreaField)
#else
                        )
#endif //#if LEADTOOLS_V20_OR_LATER
                    {
                        DetailedCharacterResults detailedResultsdialog = new DetailedCharacterResults(_filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex]);
                        detailedResultsdialog.ShowDialog(this);
                    }
                    else if (_filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex] is TableFormField)
                    {
                        TableFormField tableField = _filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex] as TableFormField;
                        if (tableField.Result.Status == FormFieldStatus.Success)
                        {
                            DetailedTableResults detailedResultsdialog = new DetailedTableResults(_filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex] as TableFormField);
                            detailedResultsdialog.ShowDialog(this);
                        }
                        else
                        {
                            MessageBox.Show(DemosGlobalization.GetResxString(GetType(), "Resx_FailedRecognize"));
                        }
                    }
                }
            }
Beispiel #3
0
        private void _cmbSelectedPage_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (_filledFormViewer.Image != null)
                {
                    _filledFormViewer.Image.Dispose();
                }

                //If the user chose to only recognize the first page, there will only be a recognition confidence value for the first page
                if (_filledForms[_cmbSelectedForm.SelectedIndex].Result.PageResults.Count < _cmbSelectedPage.Items.Count)
                {
                    _txtPageConfidence.Enabled = false;
                    _txtPageConfidence.Text    = "";
                }
                else
                {
                    _txtPageConfidence.Enabled = true;
                    _txtPageConfidence.Text    = _filledForms[_cmbSelectedForm.SelectedIndex].Result.PageResults[_cmbSelectedPage.SelectedIndex].Confidence.ToString() + "%";
                }


                _filledForms[_cmbSelectedForm.SelectedIndex].Image.Page = _cmbSelectedPage.SelectedIndex + 1;
                _filledFormViewer.Image = _filledForms[_cmbSelectedForm.SelectedIndex].Image.Clone();

                _fieldResults.Rows.Clear();

                if (_filledForms[_cmbSelectedForm.SelectedIndex].ProcessingPages != null && _filledForms[_cmbSelectedForm.SelectedIndex].ProcessingPages.Count > _cmbSelectedPage.SelectedIndex)
                {
                    foreach (FormField field in _filledForms[_cmbSelectedForm.SelectedIndex].ProcessingPages[_cmbSelectedPage.SelectedIndex])
                    {
                        string[] row = new string[5];
                        row[0] = field.Name;

                        LeadRect alignedBounds = LeadRect.Empty;

                        if (field is TableFormField)
                        {
                            TableFormField tableField = field as TableFormField;
                            int            pageIndex  = Math.Max(tableField.ExpectedPages.IndexOf(_cmbSelectedPage.SelectedIndex), _cmbSelectedPage.SelectedIndex);
                            if (tableField.PagesBounds.ContainsKey(pageIndex))
                            {
                                alignedBounds = tableField.PagesBounds[pageIndex];
                            }
                            else
                            {
                                alignedBounds = LeadRect.Empty;
                            }
                        }
                        else if (field is UnStructuredTextFormField)
                        {
                            alignedBounds = field.Bounds;
                        }
                        else if (field is OmrFormField)
                        {
                            alignedBounds = _filledForms[_cmbSelectedForm.SelectedIndex].Alignment[field.MasterPageNumber - 1].AlignOmrRectangle(field.Bounds);
                        }
                        else
                        {
                            alignedBounds = _filledForms[_cmbSelectedForm.SelectedIndex].Alignment[field.MasterPageNumber - 1].AlignRectangle(field.Bounds);
                        }


                        row[4] = alignedBounds.ToString();

                        bool bAdded = true;

                        if (field.Result != null)
                        {
                            if (field is TextFormField)
                            {
                                row[1] = "Text";
                                row[2] = ((field as TextFormField).Result as TextFormFieldResult).Text;
                                row[3] = ((field as TextFormField).Result as TextFormFieldResult).AverageConfidence.ToString();
                            }
                            else if (field is UnStructuredTextFormField)
                            {
                                row[1] = "Unstructured Text";
                                row[2] = ((field as UnStructuredTextFormField).Result as TextFormFieldResult).Text;
                                row[3] = ((field as UnStructuredTextFormField).Result as TextFormFieldResult).AverageConfidence.ToString();
                            }
                            else if (field is OmrFormField)
                            {
                                row[1] = "Omr";
                                row[2] = ((field as OmrFormField).Result as OmrFormFieldResult).Text;
                                row[3] = ((field as OmrFormField).Result as OmrFormFieldResult).AverageConfidence.ToString();
                            }
                            else if (field is BarcodeFormField)
                            {
                                row[1] = "Barcode";
                                for (int i = 0; i < ((field as BarcodeFormField).Result as BarcodeFormFieldResult).BarcodeData.Count; i++)
                                {
                                    row[2] = GetDataString(((field as BarcodeFormField).Result as BarcodeFormFieldResult).BarcodeData[i].GetData());
                                }

                                row[3] = "N/A";
                            }
                            else if (field is ImageFormField)
                            {
                                row[1] = "Image";
                                row[2] = "N/A";
                                row[3] = "N/A";
                            }
                            else if (field is TableFormField)
                            {
                                row[1] = "Table";
                                row[2] = "Double click here to view the results...";
                                row[3] = "N/A";
                            }
                            else if (field is SingleSelectionField)
                            {
                                row[1] = "SingleSelection";
                                row[2] = ((field as SingleSelectionField).Result as OmrFormFieldResult).Text;
                                row[3] = ((field as SingleSelectionField).Result as OmrFormFieldResult).AverageConfidence.ToString();
                            }
                            else if (field is BubbleWordField)
                            {
                                row[1] = "BubbleWord";
                                row[2] = ((field as BubbleWordField).Result as OmrFormFieldResult).Text;
                                row[3] = ((field as BubbleWordField).Result as OmrFormFieldResult).AverageConfidence.ToString();
                            }
#if LEADTOOLS_V20_OR_LATER
                            else if (field is OmrAnswerAreaField)
                            {
                                row[1] = "OmrAnswerAreaField";
                                row[2] = ((field as OmrAnswerAreaField).Result as OmrFormFieldResult).Text;
                                row[3] = ((field as OmrAnswerAreaField).Result as OmrFormFieldResult).AverageConfidence.ToString();
                            }
                            else if (field is OmrDateField)
                            {
                                row[1] = "OmrDateField";
                                row[2] = ((field as OmrDateField).Result as OmrFormFieldResult).Text;
                                row[3] = ((field as OmrDateField).Result as OmrFormFieldResult).AverageConfidence.ToString();
                            }
#endif //#if LEADTOOLS_V20_OR_LATER
                        }

                        if (bAdded)
                        {
                            _fieldResults.Rows.Add(row);
                        }

                        if (field is TableFormField)
                        {
                            _fieldResults.Rows[_fieldResults.Rows.Count - 1].Cells[2].Style.ForeColor = Color.Blue;
                        }
                    }

                    if (_fieldResults.Rows.Count > 0)
                    {
                        _fieldResults.Rows[0].Selected = true;
                    }
                }
                UpdateControls();
            }
            catch (Exception exp)
            {
                Messager.ShowError(this, exp);
            }
        }
Beispiel #4
0
        private void _fieldResults_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                //clear annotations
                automation.SelectObjects(null);
                automation.Container.Children.Clear();

                if (_fieldResults.Rows.Count > 0 && _fieldResults.SelectedRows.Count > 0)
                {
                    if (_fieldViewer.Image != null)
                    {
                        _fieldViewer.Image.Dispose();
                    }

                    int formIndex  = _cmbSelectedForm.SelectedIndex;
                    int pageIndex  = _cmbSelectedPage.SelectedIndex;
                    int fieldIndex = _fieldResults.SelectedRows[0].Index;

                    _filledForms[_cmbSelectedForm.SelectedIndex].Image.Page = _cmbSelectedPage.SelectedIndex + 1;
                    LeadRect  tempRect = LeadRect.Empty;
                    FormField field    = _filledForms[formIndex].ProcessingPages[pageIndex][fieldIndex];

                    if (field is TableFormField)
                    {
                        TableFormField tableField        = field as TableFormField;
                        int            expectedPageIndex = -1;
                        if (tableField.ExpectedPages.Contains(pageIndex))
                        {
                            expectedPageIndex = tableField.ExpectedPages.IndexOf(pageIndex);
                        }

                        expectedPageIndex = Math.Max(expectedPageIndex, pageIndex);

                        if (tableField.PagesBounds.ContainsKey(expectedPageIndex))
                        {
                            tempRect = tableField.PagesBounds[expectedPageIndex];
                        }
                        else
                        {
                            tempRect = LeadRect.Empty;
                        }
                    }
                    else if (field is UnStructuredTextFormField)
                    {
                        tempRect = field.Bounds;
                    }
                    else if (field is OmrFormField)
                    {
                        tempRect = _filledForms[_cmbSelectedForm.SelectedIndex].Alignment[field.MasterPageNumber - 1].AlignOmrRectangle(field.Bounds);
                    }
                    else
                    {
                        tempRect = _filledForms[_cmbSelectedForm.SelectedIndex].Alignment[field.MasterPageNumber - 1 >= 0 ? field.MasterPageNumber - 1 : 0].AlignRectangle(field.Bounds);
                    }

                    Rectangle alignedRect = Leadtools.Demos.Converters.ConvertRect(_filledForms[formIndex].Image.RectangleToImage(RasterViewPerspective.TopLeft, tempRect));
                    if (!alignedRect.IsEmpty)
                    {
                        _fieldViewer.Image = _filledForms[formIndex].Image.Clone(Leadtools.Demos.Converters.ConvertRect(alignedRect));
                    }
                    else
                    {
                        _fieldViewer.Image = null;
                    }
                    AddHighlight(alignedRect);

                    LeadMatrix LeadImageMatrix = _filledFormViewer.ImageTransform;
                    //Ensure field is visible
                    Transformer transformer = new Transformer(new System.Drawing.Drawing2D.Matrix((float)LeadImageMatrix.M11,
                                                                                                  (float)LeadImageMatrix.M12,
                                                                                                  (float)LeadImageMatrix.M21,
                                                                                                  (float)LeadImageMatrix.M22,
                                                                                                  (float)LeadImageMatrix.OffsetX,
                                                                                                  (float)LeadImageMatrix.OffsetY));

                    PointF location = transformer.PointToPhysical(alignedRect.Location);
                    _filledFormViewer.CenterAtPoint(LeadPoint.Create((int)location.X, (int)location.Y));

                    UpdateControls();
                }
            }
            catch (Exception exp)
            {
                Messager.ShowError(this, exp);
            }
        }
Beispiel #5
0
        public DetailedTableResults(TableFormField table)
        {
            _table = table;
            InitializeComponent();
            _tableResults.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
            _tableResults.AutoSizeRowsMode          = DataGridViewAutoSizeRowsMode.AllCells;
            foreach (TableColumn column in _table.Columns)
            {
                int index = _tableResults.Columns.Add(column.OcrField.Name, column.OcrField.Name);
                if (column.Alignment == FieldAlignment.Left)
                {
                    _tableResults.Columns[index].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
                }
                else if (column.Alignment == FieldAlignment.Right)
                {
                    _tableResults.Columns[index].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                }
                else if (column.Alignment == FieldAlignment.Center)
                {
                    _tableResults.Columns[index].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                }
            }

            TableFormFieldResult results = table.Result as TableFormFieldResult;

            if (results != null)
            {
                for (int i = 0; i < results.Rows.Count; i++)
                {
                    TableFormRow row = results.Rows[i];
                    _tableResults.Rows.Add();

                    int lineCounter = 1;
                    for (int j = 0; j < row.Fields.Count; j++)
                    {
                        OcrFormField ocrField = row.Fields[j];
                        if (ocrField is TextFormField)
                        {
                            TextFormFieldResult txtResults = ocrField.Result as TextFormFieldResult;
                            _tableResults.Rows[i].Cells[j].Value = txtResults.Text;
                            int counter = 1;

                            if (txtResults.Text != null)
                            {
                                counter += CountCharacterInString(txtResults.Text, '\n');
                            }

                            if (counter > lineCounter)
                            {
                                lineCounter = counter;
                            }

                            _tableResults.Rows[i].Cells[j].Tag = ocrField;
                        }
                        else if (ocrField is OmrFormField)
                        {
                            OmrFormFieldResult omrResults = ocrField.Result as OmrFormFieldResult;
                            _tableResults.Rows[i].Cells[j].Value = omrResults.Text;
                            _tableResults.Rows[i].Cells[j].Tag   = ocrField;
                        }
                    }

                    _tableResults.Rows[i].Height *= lineCounter;
                }
            }
        }