示例#1
0
文件: Patterning.cs 项目: Zimex/Tess
 public Patterning(List<string> t)
 {
     patterns = new Dictionary<string, string>();
     results = new Dictionary<string, string>();
     text = t;
     this.FillPatterns();
     this.InitiateResults();
 }
示例#2
0
文件: Patterning.cs 项目: Zimex/Tess
       public  Dictionary<string, string> IterateSection(string sectionName, string s)
        {
            List<string> lines = Patterning.RemoveEmpltyLines(s);
            string copy = s;
          
            
           Dictionary<string,string> result=new Dictionary<string,string>();
           switch(sectionName)
           {
               case("nabywca"):
                  // Dictionary<string, string> nabywca = new Dictionary<string, string>();
                   foreach(string str in lines)
                   {
                       foreach (Match m in Regex.Matches(str, patterns["kod pocztowy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           string temp = str;
                           if (!result.ContainsKey("kod pocztowy")) result.Add("kod pocztowy", m.Value.ToString());
                           else
                           {
                               
                               temp = Regex.Replace(temp, result["kod pocztowy"], "");
                               result["kod pocztowy"] += "|" + m.Value.ToString();
                           }
                            
                           temp = Regex.Replace(temp, result["kod pocztowy"], "");
                           temp = Regex.Replace(temp, ":", "");
                           temp = Regex.Replace(temp, " ", "");

                           if (!result.ContainsKey("miejscowosc")) result.Add("miejscowosc", temp);
                           else
                           {
                               result["miejscowosc"] += "|" + temp;

                           }

                          // MessageBox.Show(result["miejscowosc"]);
                           copy = Regex.Replace(copy, result["miejscowosc"], "");
                           copy = Regex.Replace(copy, result["kod pocztowy"], "");

                       }
                       foreach (Match m in Regex.Matches(str, patterns["NIP"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           if (!result.ContainsKey("NIP")) result.Add("NIP", m.Value.ToString());
                           else result["NIP"] += "|" + m.Value.ToString();
                           copy = Regex.Replace(copy, result["NIP"], "");
                       }
                       foreach (Match m in Regex.Matches(str, "sprzedawca.*", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           string temp = m.Value.ToString();
                           //MessageBox.Show(temp);
                           temp = Regex.Replace(temp, "sprzedawca", "", RegexOptions.IgnoreCase);
                           temp = Regex.Replace(temp, ":", "");
                           
                           if (!result.ContainsKey("nazwa")) result.Add("nazwa",temp);
                           else result["nazwa"] += "|" + temp;
                           copy = Regex.Replace(copy, result["nazwa"], "");
                       }
                       foreach (Match m in Regex.Matches(str, "nabywca.*", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           string temp = m.Value.ToString();
                          // MessageBox.Show(temp);
                           temp = Regex.Replace(temp, "nabywca", "",RegexOptions.IgnoreCase);
                           temp = Regex.Replace(temp, ":", "");
                           temp = Regex.Replace(temp, "^ ", "");
                           if (!result.ContainsKey("nazwa")) result.Add("nazwa", temp);
                           else result["nazwa"] += "|" + temp;
                           copy = Regex.Replace(copy, result["nazwa"], "");
                       }
                        foreach (Match m in Regex.Matches(str, patterns["ulica"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                        {
                            if (!result.ContainsKey("ulica")) result.Add("ulica", m.Value.ToString());
                            else result["ulica"] += "|" + m.Value.ToString();
                            copy = Regex.Replace(copy, result["ulica"], "");
                           // string pattern = @"((ul)|(uł)|(u1)){1}.?(\s)?";
                            string pattern = "((ul)|(uł)|(u1)){1}";

                        foreach (Match ma in Regex.Matches(result["ulica"], pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                        {
                           // MessageBox.Show(ma.Value.ToString());
                            if (result.ContainsKey("ulica"))
                            result["ulica"] = Regex.Replace(result["ulica"],ma.Value.ToString(),"");
                        }
                            
                        result["ulica"] = Regex.Replace(result["ulica"], @"\.", "");
                        }
                        foreach (Match m in Regex.Matches(str, patterns["numer ulicy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                        {
                     //       MessageBox.Show("a:"+str);

                    //        MessageBox.Show("numer: "+m.Value.ToString());
                            if (!result.ContainsKey("numer ulicy")) result.Add("numer ulicy", m.Value.ToString());
                            else result["numer ulicy"] += "|" + m.Value.ToString();
                            copy = Regex.Replace(copy, result["numer ulicy"], "");
                            result["numer ulicy"] = Regex.Replace(result["numer ulicy"], result["ulica"], "");
                            string pattern = @"((ul)|(uł)|(u1)){1}\.*";
                            result["numer ulicy"] = Regex.Replace(result["numer ulicy"], pattern, "");
                        }

                      // if(result.ContainsKey("ulica"))
                        

                   }

                   if (!result.ContainsKey("ulica") && !result.ContainsKey("numer ulicy"))
                   {
                       copy = Regex.Replace(copy, "N.P", "",RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, "nabywca", "", RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, "sprzedawca", "", RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, ":", "");
                       copy = Regex.Replace(copy, "\n", "");
                       result["ulica"] = Regex.Replace(copy, "[0-9]{1,3}", "");
                      // MessageBox.Show("ulica po: " + result["ulica"]);
                       result["numer ulicy"] = Regex.Replace(copy, @"\D*", "");
                   }
                   //MessageBox.Show("left: " + copy);
                   break;
               case("sprzedawca"):
                  // Dictionary<string, string> nabywca = new Dictionary<string, string>();
                   foreach(string str in lines)
                   {
                       foreach (Match m in Regex.Matches(str, patterns["kod pocztowy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           string temp = str;
                           if (!result.ContainsKey("kod pocztowy")) result.Add("kod pocztowy", m.Value.ToString());
                           else
                           {
                               
                               temp = Regex.Replace(temp, result["kod pocztowy"], "");
                               result["kod pocztowy"] += "|" + m.Value.ToString();
                           }
                            
                           temp = Regex.Replace(temp, result["kod pocztowy"], "");
                           temp = Regex.Replace(temp, ":", "");
                           temp = Regex.Replace(temp, " ", "");

                           if (!result.ContainsKey("miejscowosc")) result.Add("miejscowosc", temp);
                           else
                           {
                               result["miejscowosc"] += "|" + temp;

                           }

                          // MessageBox.Show(result["miejscowosc"]);
                           copy = Regex.Replace(copy, str, "");
                           copy = Regex.Replace(copy, result["miejscowosc"], "");
                           copy = Regex.Replace(copy, result["kod pocztowy"], "");

                       }
                       foreach (Match m in Regex.Matches(str, patterns["NIP"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           if (!result.ContainsKey("NIP")) result.Add("NIP", m.Value.ToString());
                           else result["NIP"] += "|" + m.Value.ToString();
                           copy = Regex.Replace(copy, result["NIP"], "");
                       }
                       foreach (Match m in Regex.Matches(str, "sprzedawca.*", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           string temp = m.Value.ToString();
                           //MessageBox.Show(temp);
                           temp = Regex.Replace(temp, "sprzedawca", "", RegexOptions.IgnoreCase);
                           temp = Regex.Replace(temp, ":", "");
                           
                           if (!result.ContainsKey("nazwa")) result.Add("nazwa",temp);
                           else result["nazwa"] += "|" + temp;
                           copy = Regex.Replace(copy, str, "");
                          // copy = Regex.Replace(copy, result["nazwa"], "");
                       }
                       foreach (Match m in Regex.Matches(str, "nabywca.*", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           string temp = m.Value.ToString();
                          // MessageBox.Show(temp);
                           temp = Regex.Replace(temp, "nabywca", "",RegexOptions.IgnoreCase);
                           temp = Regex.Replace(temp, ":", "");
                           temp = Regex.Replace(temp, "^ ", "");
                           if (!result.ContainsKey("nazwa")) result.Add("nazwa", temp);
                           else result["nazwa"] += "|" + temp;
                         //  copy = Regex.Replace(copy, result["nazwa"], "");
                           copy = Regex.Replace(copy, str, "");
                       }
                        foreach (Match m in Regex.Matches(str, patterns["ulica"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                        {
                            if (!result.ContainsKey("ulica")) result.Add("ulica", m.Value.ToString());
                            else result["ulica"] += "|" + m.Value.ToString();
                            copy = Regex.Replace(copy, result["ulica"], "");
                           // string pattern = @"((ul)|(uł)|(u1)){1}.?(\s)?";
                            string pattern = "((ul)|(uł)|(u1)){1}";

                        foreach (Match ma in Regex.Matches(result["ulica"], pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                        {
                           // MessageBox.Show(ma.Value.ToString());
                            if (result.ContainsKey("ulica"))
                            result["ulica"] = Regex.Replace(result["ulica"],ma.Value.ToString(),"");
                        }
                            
                        result["ulica"] = Regex.Replace(result["ulica"], @"\.", "");
                        }
                        foreach (Match m in Regex.Matches(str, patterns["numer ulicy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                        {
                          //  MessageBox.Show("a:"+str);

                       //     MessageBox.Show("numer: "+m.Value.ToString());
                            if (!result.ContainsKey("numer ulicy")) result.Add("numer ulicy", m.Value.ToString());
                            else result["numer ulicy"] += "|" + m.Value.ToString();
                            copy = Regex.Replace(copy, result["numer ulicy"], "");
                            result["numer ulicy"] = Regex.Replace(result["numer ulicy"], result["ulica"], "");
                            string pattern = @"((ul)|(uł)|(u1)){1}\.*";
                            result["numer ulicy"] = Regex.Replace(result["numer ulicy"], pattern, "");
                        }

                      // if(result.ContainsKey("ulica"))
                        

                   }

                   if (!result.ContainsKey("ulica") && !result.ContainsKey("numer ulicy"))
                   {
                       copy = Regex.Replace(copy, "N.P", "",RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, "nabywca", "", RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, "sprzedawca", "", RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, ":", "");
                       copy = Regex.Replace(copy, "\n", "");
                       result["ulica"] = Regex.Replace(copy, "[0-9]{1,3}", "");
                      // MessageBox.Show("ulica po: " + result["ulica"]);
                       result["numer ulicy"] = Regex.Replace(copy, @"\D*", "");
                   }
                   //MessageBox.Show("left: " + copy);
                   break;
               case("naglowek"):
                   
                   result["nazwa"]=lines[0];
                   foreach (string str in lines)
                   {
                       foreach (Match m in Regex.Matches(str, patterns["kod pocztowy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           string temp = str;
                           if (!result.ContainsKey("kod pocztowy")) result.Add("kod pocztowy", m.Value.ToString());
                           else
                           {

                               temp = Regex.Replace(temp, result["kod pocztowy"], "");
                               result["kod pocztowy"] += "|" + m.Value.ToString();
                           }

                           temp = Regex.Replace(temp, result["kod pocztowy"], "");
                           temp = Regex.Replace(temp, ":", "");
                           temp = Regex.Replace(temp, " ", "");

                           if (!result.ContainsKey("miejscowosc")) result.Add("miejscowosc", temp);
                           else
                           {
                               result["miejscowosc"] += "|" + temp;

                           }

                           // MessageBox.Show(result["miejscowosc"]);
                           copy = Regex.Replace(copy, result["miejscowosc"], "");
                           copy = Regex.Replace(copy, result["kod pocztowy"], "");
                           copy = Regex.Replace(copy, str, "");

                       }
                       foreach (Match m in Regex.Matches(str, patterns["NIP"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           if (!result.ContainsKey("NIP")) result.Add("NIP", m.Value.ToString());
                           else result["NIP"] += "|" + m.Value.ToString();
                           copy = Regex.Replace(copy, result["NIP"], "");
                           copy = Regex.Replace(copy, "N.P:*", "",RegexOptions.IgnoreCase);
                       }
                   
                 
                       foreach (Match m in Regex.Matches(str, patterns["ulica"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                           if (!result.ContainsKey("ulica")) result.Add("ulica", m.Value.ToString());
                           else result["ulica"] += "|" + m.Value.ToString();
                           copy = Regex.Replace(copy, result["ulica"], "");
                           // string pattern = @"((ul)|(uł)|(u1)){1}.?(\s)?";
                           string pattern = "((ul)|(uł)|(u1)){1}";

                           foreach (Match ma in Regex.Matches(result["ulica"], pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                           {
                               // MessageBox.Show(ma.Value.ToString());
                               if (result.ContainsKey("ulica"))
                                   result["ulica"] = Regex.Replace(result["ulica"], ma.Value.ToString(), "");
                           }

                           result["ulica"] = Regex.Replace(result["ulica"], @"\.", "");
                       }
                       foreach (Match m in Regex.Matches(str, patterns["numer ulicy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                       {
                          // MessageBox.Show("a:" + str);

                           MessageBox.Show("numer: " + m.Value.ToString());
                           if (!result.ContainsKey("numer ulicy")) result.Add("numer ulicy", m.Value.ToString());
                           else result["numer ulicy"] += "|" + m.Value.ToString();
                           copy = Regex.Replace(copy, result["numer ulicy"], "");
                           result["numer ulicy"] = Regex.Replace(result["numer ulicy"], result["ulica"], "");
                           string pattern = @"((ul)|(uł)|(u1)){1}\.*";
                           result["numer ulicy"] = Regex.Replace(result["numer ulicy"], pattern, "");
                       }

                       foreach (Match m in Regex.Matches(str, patterns["numer konta"]))
                       {
                           if (!result.ContainsKey("numer konta")) result.Add("numer konta", m.Value.ToString());
                           else result["numer konta"] += "|" + m.Value.ToString();
                          // copy = Regex.Replace(copy, result["numer konta"], "");
                           copy = Regex.Replace(copy, str, "",RegexOptions.IgnoreCase);
                       }
                       foreach (Match m in Regex.Matches(str, patterns["adres email"]))
                       {
                           if (!result.ContainsKey("adres email")) result.Add("adres email", m.Value.ToString());
                           else result["adres email"] += "|" + m.Value.ToString();
                           // copy = Regex.Replace(copy, result["numer konta"], "");
                           copy = Regex.Replace(copy, str, "", RegexOptions.IgnoreCase);
                       }
                       foreach (Match m in Regex.Matches(str, patterns["strona"]))
                       {
                           if (!result.ContainsKey("strona")) result.Add("strona", m.Value.ToString());
                           else result["strona"] += "|" + m.Value.ToString();
                           // copy = Regex.Replace(copy, result["numer konta"], "");
                           copy = Regex.Replace(copy, str, "", RegexOptions.IgnoreCase);
                       }
                       foreach (Match m in Regex.Matches(str, patterns["telefon"]))
                       {
                           if (!result.ContainsKey("telefon")) result.Add("telefon", m.Value.ToString());
                           else result["telefon"] += "|" + m.Value.ToString();
                           // copy = Regex.Replace(copy, result["numer konta"], "");
                           copy = Regex.Replace(copy, str, "", RegexOptions.IgnoreCase);
                           result["telefon"] = Regex.Replace(result["telefon"], ":", "");
                           result["telefon"] = Regex.Replace(result["telefon"], ",", "");
                       }
                   

                   }

                   if (!result.ContainsKey("ulica") && !result.ContainsKey("numer ulicy"))
                   {
                       copy = Regex.Replace(copy, "N.P", "", RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, "nabywca", "", RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, "sprzedawca", "", RegexOptions.IgnoreCase);
                       copy = Regex.Replace(copy, ":", "");
                       copy = Regex.Replace(copy, "\n", "");
                       result["ulica"] = Regex.Replace(copy, "[0-9]{1,3}", "");
                       MessageBox.Show("ulica po: " + result["ulica"]);
                       result["numer ulicy"] = Regex.Replace(copy, @"\D*", "");
                   }
                   break;
               default:
                   break;
           }
            return result;
        }