рдкреЗрд╢ рд╣реИ tessnet2 OCR рд▓рд╛рдЗрдмреНрд░реЗрд░реА (C #)

рдЙрджрд╛рд╣рд░рдг

рдмрд╕ рджреВрд╕рд░реЗ рджрд┐рди рдореБрдЭреЗ рдЪрд┐рддреНрд░ рдореЗрдВ рд╕рд░рд▓ рдкрд╛рда рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдФрд░ рдореЗрд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рддреБрд░рдВрдд рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдмрд╛рдЬрд╛рд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред Google рдХреЛ рдмрд╕ рдХреБрдЫ рдЕрдиреБрд░реЛрдз рдФрд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ tessnet2 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рд▓рдЧрд╛рддрд╛рд░ рд╣рдмрд░ рдХреЛ рдкрдврд╝рд╛ рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдУрд╕реАрдЖрд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ tessnet2 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред



tessnet2 Tesseract OCR рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ



рдЯреЗрд╕рд░реЗрдХреНрдЯ рдУрд╕реАрдЖрд░ рдЗрдВрдЬрди рдпреВрдПрдирдПрд▓рд╡реА рдПрдХреНрдпреВрд░реЗрд╕реА рдЯреЗрд╕реНрдЯ рдореЗрдВ 1995 рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП 3 рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ред 1995 рд╕реЗ 2006 рдХреЗ рдмреАрдЪ, рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдкрд░ рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рдУрд╕реАрдЖрд░ рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЬреЛ рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╡рд╣ рдмрд╛рдЗрдирд░реА, рдЧреНрд░реЗ рдпрд╛ рдХрд▓рд░ рдЗрдореЗрдЬ рдФрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдкрдврд╝реЗрдЧрд╛ред TIFF рд░реАрдбрд┐рдВрдЧ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ рддрд╛рдХрд┐ рдЕрд╕рдореНрдкреАрдбрд┐рдд TIFF рдЫрд╡рд┐рдпрд╛рдВ рдкрдврд╝реА рдЬрд╛ рд╕рдХреЗрдВ, рдпрд╛ Libtiff рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдЪрд┐рддреНрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗред



Tessnet2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:

1. рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп , .NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Tessnet2.dll рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ (рд╕рдВрджрд░реНрдн) рдЬреЛрдбрд╝реЗрдВред

2. рд╣рдореЗрдВ рдЬрд┐рд╕ рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) ( tesseract-2.00.eng.tar.gz ) рдФрд░ рдЗрд╕реЗ tessdata рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдЯреЗрд╕рдбреЗрдЯрд╛ рдлрд╝реЛрд▓реНрдбрд░ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



рдЪрд┐рддреНрд░ рд╕реЗ рдкрд╛рда рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдкрд╛рда рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

Bitmap image = new Bitmap ( "eurotext.tif" );

tessnet2.Tesseract ocr = new tessnet2.Tesseract();

ocr.SetVariable( "tessedit_char_whitelist" , "0123456789" ); // If digit only

ocr.Init( @"c:\temp" , " eng " , false ); // To use correct tessdata

List <tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty);

foreach (tessnet2.Word word in result)

Console .WriteLine( "{0} : {1}" , word.Confidence, word.Text);




* This source code was highlighted with Source Code Highlighter .






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

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдПрдХ рдХреИрдкреНрдЪрд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рд╣рдореЗрдВ рджреЛ рдирдВрдмрд░реЛрдВ рдкрд░ рд╕рд░рд▓ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдФрд░ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░рддреАрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдХреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдкреГрд╖реНрдарднреВрдорд┐ рд╣реИ, рдХрднреА-рдХрднреА рдореЗрд░реЗ рд▓рд┐рдП (рд╡реНрдпрдХреНрддрд┐) рдХреЛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред



рддреБрд░рдВрдд рдореИрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рд▓рд╛рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:



screenshot1



screenshot2



screenshot3



screenshot4



screenshot5



рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреА рд╡рдЬрд╣ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреБрдЫ рднреА рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдкреГрд╖реНрдарднреВрдорд┐, рдЬрд┐рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛, рднреА рд╕реНрдердЧрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЪрд┐рддреНрд░ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЫреЛрдЯрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рднрд╡реНрдп рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдХреБрдЫ рдкрд┐рдХреНрд╕реЗрд▓ рдкреАрдЫреЗ рд╣рдЯрддрд╛ рд╣реВрдВ рдФрд░ рдЖрдпрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реВрдВ рдФрд░ рд╡рд╣рд╛рдВ рд░рдВрдЧ рдЬрдорд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдкрд╣рд▓реЗ рдЕрдВрдХ рдХреЗ рдмрд╛рдж рд░рдВрдЧ рднреА рдЬрдорд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕рдВрдХреЗрдд рд╕реЗ рдкрд╣рд▓реЗ (рдмрд╛рдж рд╡рд╛рд▓рд╛ рд╣реИрдХ рдХреЗ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреАред .kред рд▓реЗрдЦ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдлрд┐рд░ рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рдЫреЛрдбрд╝ рджрд┐рдпрд╛)ред рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЖрдП рд╕рднреА рд░рдВрдЧреЛрдВ рдкрд░ рдкреЗрдВрдЯ рдХрд░реЗрдВ рдФрд░ рд╕рдлреЗрдж рди рд╣реЛрдВред



рд╕рднреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ, рдХреЗрд╡рд▓ рдмрд┐рдЯрдореИрдк рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рднрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреНрд╖реЗрддреНрд░ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

void FloodFill( Bitmap bitmap, int x, int y, Color color)

{

BitmapData data = bitmap.LockBits(

new Rectangle(0, 0, bitmap.Width, bitmap.Height),

ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

int [] bits = new int [data.Stride / 4 * data.Height];

Marshal.Copy(data.Scan0, bits, 0, bits.Length);



LinkedList<Point> check = new LinkedList<Point>();

int floodTo = color.ToArgb();

int floodFrom = bits[x + y * data.Stride / 4];

bits[x + y * data.Stride / 4] = floodTo;



if (floodFrom != floodTo)

{

check.AddLast( new Point(x, y));

while (check.Count > 0)

{

Point cur = check.First.Value;

check.RemoveFirst();



foreach (Point off in new Point[] {

new Point(0, -1), new Point(0, 1),

new Point(-1, 0), new Point(1, 0)})

{

Point next = new Point(cur.X + off.X, cur.Y + off.Y);

if (next.X >= 0 && next.Y >= 0 &&

next.X < data.Width &&

next.Y < data.Height)

{

if (bits[next.X + next.Y * data.Stride / 4] == floodFrom)

{

check.AddLast(next);

bits[next.X + next.Y * data.Stride / 4] = floodTo;

}

}

}

}

}



Marshal.Copy(bits, 0, data.Scan0, bits.Length);

bitmap.UnlockBits(data);

}

}




* This source code was highlighted with Source Code Highlighter .






рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдореИрдВ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реВрдВред



рдкрд░рд┐рдгрд╛рдо



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




All Articles