API การจดจำอักขระด้วยแสงฟรีสำหรับต้นฉบับภาษาจีน
OCR C++ แบบเปิดแหล่งที่มาสำหรับทำการจดจำอักขระบนต้นฉบับภาษาจีนโดยใช้การจับคู่แบบเทมเพลต ซึ่งอักขระจะถูกเปรียบเทียบพิกเซลต่อพิกเซลกับตัวอย่างที่รู้จัก.
OCR C++ ฟรีคืออะไร?
การจดจำอักขระด้วยแสง (OCR) ในสคริปต์ที่ไม่ใช่ละติน—โดยเฉพาะภาษาจีน—มีความท้าทายเฉพาะเนื่องจากความซับซ้อนและความหลากหลายของอักขระ โชคดีที่ OCR C++ แบบโอเพ่นซอร์สโดย Sebastian Starke นำเสนอวิธีแก้ที่สะอาดและขยายได้ซึ่งออกแบบมาสำหรับการจดจำอักขระที่พิมพ์หรือเขียนด้วยมือจากแหล่งต้นฉบับ การออกแบบโดยคำนึงถึงความเรียบง่ายและความยืดหยุ่น ทำให้ API ที่มีน้ำหนักเบานี้ช่วยให้นักพัฒนาซอฟต์แวร์ทดลองการจดจำอักขระด้วยวิธีการประมวลผลภาพคลาสสิกแทนโมเดลการเรียนรู้เครื่องที่หนักหน่วง
โครงการนี้ไม่ใช่เครื่องยนต์ OCR แบบประสาทเทียมขนาดเต็มเช่น Tesseract แต่ใช้แนวทางที่ต่างออกไป: ใช้การจับคู่แบบเทมเพลต ซึ่งอักขระจะถูกเปรียบเทียบพิกเซลต่อพิกเซลกับตัวอย่างที่รู้จัก ทำให้เหมาะสำหรับการใช้ในด้านการศึกษา สภาพแวดล้อมที่ควบคุม หรือภารกิจการจดจำเฉพาะเช่นการวิเคราะห์ต้นฉบับประวัติศาสตร์ แบบอักษรจีนดั้งเดิม หรือชุดข้อมูลการเขียนมือแบบง่าย โครงการนี้เหมาะอย่างยิ่งสำหรับนักพัฒนาที่ทำงานในสภาพแวดล้อมที่มีทรัพยากรจำกัด เช่น ระบบ Linux ฝังตัว, Raspberry Pi หรืออุปกรณ์สแกนอุตสาหกรรม เนื่องจากไม่พึ่งพาขึ้นกับไลบรารีขนาดใหญ่หรือโมเดลการเรียนรู้ลึก
เริ่มต้นใช้งาน OCR
วิธีที่แนะนำในการติดตั้ง OCR คือการใช้ GitHub โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่ราบรื่น
Install OCR API via GitHub
Install OCR API via GitHub
git clone https://github.com/sebastianstarke/OCR.git You can also install it manually; download the latest release files directly from GitHub repository.
เครื่องยนต์ OCR แบบเทมเพลต
API OCR แบบเปิดแหล่งที่มาสำหรับต้นฉบับภาษาจีนใน C++ ได้ให้การสนับสนุนเต็มรูปแบบสำหรับการใช้เครื่องยนต์ OCR แบบเทมเพลตภายในแอป C++ ใจกลางของไลบรารีนี้คือระบบเปรียบเทียบภาพคลาสสิก: ภาพอักขระจะถูกทำให้เป็นสีขาว-ดำและเปรียบเทียบกับเทมเพลตโดยใช้เมตริกระยะทาง (โดยทั่วไปคือการเปรียบเทียบพิกเซล) สำหรับภาษาจีน สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อทำงานกับอักษรที่สม่ำเสมอหรือต้นฉบับที่พิมพ์
How to Perform Template-Based OCR Recognition in C++ apps?
OCR::TemplateCollection templates;
templates.loadFromFolder("templates/"); // Load preprocessed characters
OCR::Recognizer recognizer(templates);
std::string recognizedText = recognizer.recognizeFromImage("scanned_page.png");
การสนับสนุนการเตรียมภาพล่วงหน้า
ไลบรารี OCR แบบเปิดแหล่งที่มามีการสนับสนุนฟังก์ชันการเตรียมภาพอย่างครบถ้วนภายในแอป C++ ไลบรารีนี้ให้การเตรียมพื้นฐานเช่นการทำ threshold และการครอปเพื่อล้างข้อมูลรบกวน ภาพต้นฉบับภาษาจีนมักเขียนบนกระดาษเก่า ดังนั้นการทำความสะอาดภาพเป็นสิ่งจำเป็นสำหรับผลลัพธ์ที่แม่นยำ ตัวอย่างต่อไปนี้แสดงให้เห็นว่า ด้วยเพียงไม่กี่บรรทัดของโค้ด C++ นักพัฒนาซอฟต์แวร์สามารถทำการเตรียมภาพได้
How to Perform Image Preprocessing before OCR Operations inside C++ APPs?
OCR::ImageProcessor processor;
cv::Mat cleanImage = processor.binarize("raw_scan.png");
การสนับสนุนการแปลงรูปทรงมอร์โฟโลจิก
กระบวนการเริ่มต้นด้วยชุดของการแปลงรูปทรงมอร์โฟโลจิก ซึ่งเป็นการดำเนินการประมวลผลภาพพื้นฐานที่ปรับเปลี่ยนรูปทรงของคุณลักษณะในภาพ ในบริบทนี้ ใช้เพื่อทำความสะอาดภาพต้นฉบับ, กำจัดสัญญาณรบกวน, และเตรียมอักขระสำหรับการแยกส่วน