Free Optical Character Recognition API for Chinese Manuscripts
Open Source C++ OCR to perform OCR operations on Chinese Manuscripts using template-based matching, where characters are matched pixel-wise against known samples.
Kas yra nemokamas C++ OCR?
Optinis simbolių atpažinimas (OCR) ne lotyniškų rašmenų – ypač kinų – srityje kelia unikalių iššūkių dėl simbolių sudėtingumo ir įvairovės. Laimei, atviro kodo OCR C++ API, sukurtas Sebastian Starke, siūlo švarią, išplečiamą sprendimą, pritaikytą spausdintų ar ranka rašytų kinų simbolių atpažinimui, ypač iš rankraščių šaltinių. Sukurtas su paprastumu ir lankstumu omenyje, šis lengvas API leidžia programinės įrangos kūrėjams eksperimentuoti su simbolių atpažinimu, naudodami klasikinius vaizdo apdorojimo metodus, o ne sunkius mašininio mokymosi modelius.
Šis projektas nėra pilno masto neuroninis OCR variklis, kaip Tesseract. Vietoj to jis renkasi kitokį kelią: naudoja šablonų pagrindu veikiančią atitikimo metodiką, kur simboliai lyginami pikseliui su žinomais pavyzdžiais. Tai daro jį idealiu edukaciniam naudojimui, kontroliuojamoms aplinkoms arba specifiniams atpažinimo uždaviniams, tokiems kaip istorinių rankraščių analizė, tradiciniai kinų šriftai ar supaprastintos rankrašto duomenų bazės. Projektas ypač tinka kūrėjams, dirbantiems riboto išteklių aplinkoje, pvz., įterptinėse Linux sistemose, Raspberry Pi ar pramoniniuose skenavimo įrenginiuose, kadangi nepriklauso nuo sunkių priklausomybių ar giluminio mokymosi bibliotekų.
Pradžia su OCR
Rekomenduojamas būdas įdiegti OCR yra naudojant GitHub. Prašome naudoti šią komandą sklandžiam įdiegimui.
Įdiegti OCR API per GitHub
Įdiegti OCR API per GitHub
git clone https://github.com/sebastianstarke/OCR.git Taip pat galite įdiegti rankiniu būdu; atsisiųskite naujausius leidimo failus tiesiai iš GitHub saugyklos.
Šablonų pagrindu veikiantis OCR variklis
Atviro kodo optinis simbolių atpažinimas (OCR) kinų rankraštuose C++ API suteikia visišką palaikymą šablonų pagrindu veikiančiam OCR varikliui C++ programose. Bibliotekos širdyje yra klasikinė vaizdų palyginimo sistema: simbolių vaizdai binarizuojami ir tada lyginami su šablonais, naudojant atstumo metriką (dažniausiai pikseliui lyginimas). Kinų kalbai tai ypač naudinga, kai dirbama su nuosekliu kaligrafijos ar spausdintu rankraščiu tekstu.
Kaip atlikti šablonų pagrindu veikiantį OCR atpažinimą C++ programose?
OCR::TemplateCollection templates;
templates.loadFromFolder("templates/"); // Load preprocessed characters
OCR::Recognizer recognizer(templates);
std::string recognizedText = recognizer.recognizeFromImage("scanned_page.png");
Paveikslėlių išankstinis apdorojimas
Atviro kodo OCR biblioteka suteikia pilną palaikymą paveikslėlių išankstiniam apdorojimui C++ programose. Biblioteka siūlo bazinį apdorojimą, pvz., slenkstinį filtravimą ir apkirpimą, kad pašalintų triukšmą. Kinų rankraščiai dažnai rašomi ant senų popieriaus lapų, todėl vaizdo valymas yra būtinas tiksliai rezultatui. Žemiau pateiktas pavyzdys rodo, kaip keliais C++ kodo eilutėmis kūrėjai gali atlikti paveikslėlių išankstinį apdorojimą.
Kaip atlikti paveikslėlių išankstinį apdorojimą prieš OCR operacijas C++ programose?
OCR::ImageProcessor processor;
cv::Mat cleanImage = processor.binarize("raw_scan.png");
Morfologinių transformacijų palaikymas
Procesas prasideda serija morfologinių transformacijų. Tai pagrindinės vaizdo apdorojimo operacijos, kurios keičia vaizdo elementų geometriją. Šiame kontekste jos naudojamos rankraščio vaizdo valymui, triukšmo šalinimui ir simbolių segmentavimui.