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); }
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); }
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]); } } }