예제 #1
0
        public static ResultModel GetResultModel(ClassifiedDocument document)
        {
            var result = new ResultModel();

            result.DocClass      = document.DocClass.Title;
            result.NumberOfPages = document.Document.Pages.Count;
            foreach (var rule in document.DocClass.DataRules)
            {
                if (rule is CharacterStringRule && rule.SearchResult != null && rule.SearchResult.IsFound)
                {
                    result.Data.Add(new NamedResult()
                    {
                        Title = rule.Title, Result = rule.SearchResult
                    });
                }
                if (rule is RepeatingCSRule && rule.SearchResult != null && rule.SearchResult.IsFound)
                {
                    result.TableData.Add(new NamedResult()
                    {
                        Title = rule.Title, Result = rule.SearchResult
                    });
                }
            }
            return(result);
        }
예제 #2
0
        public List <ClassifiedDocument> Classify(Document document)
        {
            var result = new List <ClassifiedDocument>();
            ClassifiedDocument currentDoc = new ClassifiedDocument();

            foreach (var page in document.Pages)
            {
                var currentPage = page.Index + 1;
                if (_docStartedObject.DocStarted)
                {
                    if (CheckFooter(page))
                    {
                        currentDoc.Document.Pages.Add(page);
                        _docStartedObject.DocStarted   = false;
                        _docStartedObject.ClassStarted = null;
                    }
                    else
                    {
                        var dClass = CheckHeader(page);
                        if (dClass != null)
                        {
                            _docStartedObject.DocStarted   = true;
                            _docStartedObject.ClassStarted = dClass;
                            currentDoc          = new ClassifiedDocument();
                            currentDoc.DocClass = dClass;
                            currentDoc.Document = new Document();
                            currentDoc.Document.Pages.Add(page);
                            result.Add(currentDoc);
                        }
                        else
                        {
                            currentDoc.Document.Pages.Add(page);
                        }
                    }
                    currentDoc.DocClass.PagesOnOriginalImage.Add(currentPage);
                }
                else
                {
                    var dClass = CheckHeader(page);
                    if (dClass != null)
                    {
                        _docStartedObject.DocStarted   = true;
                        _docStartedObject.ClassStarted = dClass;
                        currentDoc          = new ClassifiedDocument();
                        currentDoc.DocClass = dClass;
                        currentDoc.Document = new Document();
                        currentDoc.Document.Pages.Add(page);
                        result.Add(currentDoc);
                        currentDoc.DocClass.PagesOnOriginalImage.Add(currentPage);
                    }
                }
            }
            return(result);
        }
예제 #3
0
 public void AnalyzeDocument(ClassifiedDocument document)
 {
     if (document.DocClass == null || document.Document == null || document.Document.Pages.Count == 0)
     {
         throw new Exception("ftw");
     }
     foreach (var page in document.Document.Pages)
     {
         for (int i = 0; i < document.DocClass.DataRules.Count; i++)
         {
             var rule = document.DocClass.DataRules[i];
             if (rule.SearchResult != null && rule.SearchResult.IsFound)
             {
                 continue;
             }
             rule.Check(page, document.DocClass.PagesOnOriginalImage[page.Index]);
         }
     }
 }