рдУрд╕реАрдЖрд░-рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдЦрд╛ рдкреНрд░рдгрд╛рд▓реА

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдЕрдкрдиреЗ рдХрд░рд┐рдпрд░ рдХреЗ рджреМрд░рд╛рди, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдХрд╛рд░реНрдп рдорд┐рд▓рд╛ред рд▓реЗрдЦрд╛рдВрдХрди рд╕рд╣реА рдмрд┐рд▓рдмреЛрд░реНрдб рдкрд░ рд╕рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдерд╛ред рдврд╛рд▓ рдФрд░ рдореБрджреНрд░рдг рдХреНрд░рдорд╛рдВрдХрд┐рдд рд╣реИрдВред
рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдерд╛ред рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдкрд╛рд░ рд╕рдордЭреМрддреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рд╣рдорддрд┐ рд╣реБрдИ рдХрд┐ рджреЛрдиреЛрдВ рд╕рдВрдЦреНрдпрд╛рдПрдВ рдПрдХ рд╣реА рдлреНрд░реЗрдо рдХреЗ рднреАрддрд░ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреАред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдлреНрд░реЗрдо рдврд╛рд▓ рдкрд░ рдХрд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рджрд░рдЕрд╕рд▓, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрд╕ рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрд╣рд╛рдиреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рддреАрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
  1. рдЫрд╡рд┐ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдЖрдпрдд рдвреВрдБрдврдирд╛ред
  2. рдкрд╛рда рдорд╛рдиреНрдпрддрд╛ред
  3. рдорд╛рдиреНрдпрддрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрдиред


рд▓рдбрд╝рд╛рдИ рдПрдХ - рдЦреЛрдЬ


рдЪрд┐рддреНрд░ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдЖрдпрдд рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрди рд╕рднреА рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдвреВрдВрдврд╛ рдЬрд╛рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдпрдд рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВред рдЫрд╡рд┐ рдореЗрдВ рдЖрдпрддреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ OpenCV - squares.cpp рд╕реЗ рдереЛрдбрд╝рд╛ рдбреЙрдкреНрдб рдорд╛рдирдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдпрдд рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкреИрдЯрд░реНрди рдЦреЛрдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рдЖрджрд┐рдо рд╣реИ рдФрд░ рдЕрдЧрд░ рдЗрдирдкреБрдЯ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░рдВрдЧ рд╕реАрдорд╛рдУрдВ рдФрд░ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдПрдХ рдЬрдЯрд┐рд▓ рддрд╕реНрд╡реАрд░ рд╣реИ, рддреЛ рдпрд╣ рдЖрдпрддреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ, рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрд╣рд▓реЗ рднреА, рдЖрдкрдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛ рдмрд╛рд╣рд░ рдлреЗрдВрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрдИ рдорд╛рдирджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
1. рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХрд╛ рдЕрдиреБрдкрд╛рддред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдХрдЯрдСрдл рдорд╛рдирджрдВрдб рд╣реИ (r.width <5 * r.height), рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрд▓реНрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдлреЛрдЯреЛрдЧреНрд░рд╛рдлрд░ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдХреИрдорд░рд╛ 90 рдУ (рдореЗрд░реЗ рдкреИрд░реЛрдВ рдХреЗ рд╕рд╛рде рдлреЛрдЯреЛ) рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╢реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
2. рд▓рдЧрднрдЧ рд╕рдорд╛рди рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВред

рдПрдХ рдФрд░ рдмрд┐рдВрджреБ: рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЖрдпрддреЛрдВ рдХреЛ рд╕реАрдзрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдлреЛрдЯреЛрдЧреНрд░рд╛рдлрд░ рдХрд╛ рд╣рд╛рде рдлреВрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдЖрдпрдд рдореЗрдВ рддрд╕реНрд╡реАрд░ рдореЗрдВ рдЧреИрд░-рдХреНрд╖реИрддрд┐рдЬ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реАрдорд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рднреА рдЗрдХрдЯреНрдареЗ рд╣реБрдП рдЖрдпрддреЛрдВ рдореЗрдВ рдПрдХ рдлрд╛рдЗрд▓ рдХреЛ рдХрд╛рдЯрддреЗ рд╣реИрдВред
рдпрд╣ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдорд╛рдиреНрдпрддрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП cvAdaptiveThreshold рд╡рд┐рдзрд┐ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред

<source lang="cpp"> #include "cv.h" #include "highgui.h" #include <iostream> #include <math.h> #include <string.h> #include <stdio.h> using namespace cv; using namespace std; typedef vector<Point> polygon; typedef vector<polygon> polygonList; ... //     bool compareRect(const CvRect &r1, const CvRect &r2) { if (!r1.width || !r1.height) return false; if ((float)abs(r1.width- r2.width)/(float)r1.width > 0.05) return false; if ((float)abs(r1.height - r2.height)/(float)r1.height > 0.05) return false; if ((float)abs(r1.x - r2.x)/(float)r1.width > 0.02) return false; if ((float)abs(r1.y - r2.y)/(float)r1.height > 0.02) return false; return true; } //  CvRect getRect(const polygon& poly) { CvPoint p1 = cvPoint(10000,10000); CvPoint p2 = cvPoint(-10000,-10000); for (size_t i=0; i < poly.size(); i++) { const Point p = poly[i]; if (p1.x > px) p1.x = px; if (p1.y > py) p1.y = py; if (p2.x < px) p2.x = px; if (p2.y < py) p2.y = py; } return cvRect(p1.x,p1.y,p2.x-p1.x,p2.y-p1.y); } int main(int argc, char** argv) { if(argc <= 3) { cout << "Wrong Param Count: " << argc << endl; cout << "Usage: findrect infile extension outfolder" << endl; return 1; } char *fileIn = argv[1]; char *fileExt = argv[2]; char *dirOut = argv[3]; char fileOut[128]; polygonList squares; IplImage *Img = cvLoadImage(fileIn,1); Mat image(Img); if(image.empty()) { cout << "Couldn't load " << fileIn << endl; return 1; } findSquares(image, squares); vector<CvRect> rectList; int p = 0; int adaptive_method = CV_ADAPTIVE_THRESH_GAUSSIAN_C; int threshold_type = CV_THRESH_BINARY; int block_size = 65; double offset = 10; for (int j=0; j<squares.size(); j++) { //  CvRect r = getRect(squares[j]); if (r.width < 5*r.height) continue; //     bool doContinue = false; for (int k=0; k<rectList.size(); k++) if (compareRect(r, rectList[k])) { doContinue = true; break; } if (doContinue) continue; rectList.push_back(r); //     cvSetImageROI(Img, r); IplImage *dst = cvCreateImage(cvSize(r.width, r.height), Img->depth, Img->nChannels); IplImage *gray = cvCreateImage(cvSize(r.width, r.height), 8, 1); IplImage *bw = cvCreateImage(cvSize(r.width, r.height), 8, 1); cvCopy(Img, dst, NULL); cvResetImageROI(Img); //   ,        php sprintf(fileOut,"%s/%d.%s",dirOut, p, fileExt); cout << fileOut << endl; p++; //  - cvCvtColor(dst,gray,CV_RGB2GRAY); cvAdaptiveThreshold(gray, bw, 255, adaptive_method,threshold_type,block_size,offset); cvSaveImage(fileOut, bw); cvReleaseImage(&dst); cvReleaseImage(&gray); cvReleaseImage(&bw); } return 0; } 


рджреВрд╕рд░реА рдХреНрд░рд┐рдпрд╛ рдорд╛рдиреНрдпрддрд╛ рд╣реИ


рдорд╛рдиреНрдпрддрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЗрдирдкреБрдЯ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдордЧреНрд░реА рдФрд░ рдХрдЪрд░рд╛ рджреЛрдиреЛрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред
рдЫрд╡рд┐

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдо Google рд╕реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдЯреЗрд╕реЗрд░реИрдХреНрдЯред
рдЕрдиреНрдп рдорд╛рдиреНрдпрддрд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдХреНрдпреВрдирд┐рдлреЙрд░реНрдо рдХрд╛ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд▓реЗрдХрд┐рди рдЯреЗрд╕рд░реИрдХреНрдЯ рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪрд░рд┐рддреНрд░ рд╕реЗрдЯ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдирд┐рд░реНрджреЗрд╢ рдерд╛ред

рдЖрдкрдХреЗ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрдИ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
  1. рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢ - 10 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдпреБрдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЛрдИ рдЕрдХреНрд╖рд░ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓рдШреБ рд╕реЗрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрднрд╛рд╡рдирд╛ред
  2. рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, 1 рдкрд░ рдпрд╣ рд░реЛрдХрдирд╛ рд╕рдВрднрд╡ рдерд╛ - рдЯреЗрд╕рд░реИрдХреНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрдб рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА рдбрд┐рдХреНрд╢рдирд░реА рдмрдирд╛рдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ рдЙрдард╛ рд╕рдХрддреЗред
    рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдирд┐рдпрдорд┐рдд рдлреЛрдВрдЯ (рдорд╛рдирдХ рд╕реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓), рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рдУрд╕реАрдЖрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд░реНрдг рд╣реИрдВ: рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд "7" рд╕рдВрдЦреНрдпрд╛ "1", рд╕рдВрдЦреНрдпрд╛ "3" рдХреЗ рд╕рдорд╛рди рд╣реИред "рд╕реЗ" 8 ", рдЖрджрд┐ред
    рдЗрд╕рд▓рд┐рдП, рдПрдХ рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдкреНрд░рддреАрдХ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдлрд╝реЙрдиреНрдЯ рдЦреЛрдЬрдиреЗ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕рдХрд╛ рдирд╛рдо рдерд╛ - "OCR A Std"ред рдЗрд╕ рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрдкрд░реЛрдХреНрдд рдХрддрд░рдиреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХрд╛рд░рдХ рд╣реИред

рдирддреАрдЬрддрди, рдЗрд╕ рдлрд╝реЙрдиреНрдЯ рдХреЗ 10 рд╡рд░реНрдгреЛрдВ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдЯреЗрд╕рд░реИрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕реЗ рдКрдкрд░ рдХреА рдХрддрд░рдиреЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рдЪрдирд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИ, рдпрд╛рдВрддреНрд░рд┐рдХ рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред

рдХреНрд░рд┐рдпрд╛ рддреАрди - рд╕рд╛рдореВрд╣рд┐рдХ


рдЙрдмрдВрдЯреВ рдХреЗ рддрд╣рдд рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░рдирд┐рдВрдЧ рд╕реНрд▓рд╛рдЗрд╕рд┐рдВрдЧ рдФрд░ рдорд╛рдиреНрдпрддрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ php рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ, рдЪреЗрдХрд╕рдо рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Crc-8 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
 $imagesout = '/home/toor/www/out'; $findrect = '/home/toor/OCR/OpenCV-2.2.0/samples/cpp/findrect'; $uploaddir = '/home/toor/www/uploads/'; $rectdir = '/home/toor/www/out/'; $tesseract = '/home/toor/OCR/tesseract-3.00/api/tesseract'; ... if (isset($_FILES['userfile']['tmp_name'])) { $uploadfile = $uploaddir. $_FILES['userfile']['name']; if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { echo " !"; exit(1); } echo " {$_FILES['userfile']['name']}  !"; $cmd = "$findrect $uploadfile tif $imagesout"; exec($cmd, $output); echo count($output)." "; $datas = array(); foreach($output as $k => $f) { $recognized = "$rectdir$k.txt"; $cmd = "$tesseract $f $rectdir$k -l nums.ocr"; exec($cmd); if (!file_exists($recognized)) continue; echo "file: $recognized"; $data = file_get_contents($recognized); $data = preg_replace('/\D/','',$data); $data = trim($data); if (!strlen($data)) continue; if (!array_key_exists($data,$datas)) $datas[$data] = 1; else $datas[$data]++; } foreach ($datas as $d => $v) { if ($r = crc_check($d, NUMBER_LEN_1, NUMBER_LEN_CRC_1)) { echo ' : '.$r; } if ($r = crc_check($d, NUMBER_LEN_2, NUMBER_LEN_CRC_2)) { echo ' : '.$r; } } } 


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЯреЗрд╕реНрдЯ рдореЛрдб рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред
рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдлреЛрди рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рдХреИрдорд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рддрдХред

рд╕рдВрджрд░реНрдн


Tesseract
OpenCV
OCR A Std рдлрд╝реЙрдиреНрдЯ

Source: https://habr.com/ru/post/In123395/


All Articles