ทำ OCR โดยใช้ C++

เทคโนโลยี OCR (การรู้จำอักขระด้วยแสง) ช่วยให้คุณอ่านและแปลงข้อความในรูปภาพหรือเอกสารที่สแกนเป็นรูปแบบที่เครื่องอ่านได้ OCR มีกรณีการใช้งานที่หลากหลาย ซึ่งรวมถึงการอ่านรหัสจากบัตรกำนัล ทำให้ข้อความสามารถแก้ไขได้ ร้านค้าแบบบริการตนเอง การแปลงเอกสารที่พิมพ์เป็นรูปแบบดิจิทัล และอื่นๆ มีเครื่องมือและไลบรารี OCR มากมายในท้องตลาด อย่างไรก็ตาม ความน่าเชื่อถือของผลลัพธ์ OCR เป็นปัจจัยสำคัญ ในบทความนี้ ฉันจะแสดงวิธีสร้างแอปพลิเคชัน OCR ของคุณเองและแปลงรูปภาพเป็นข้อความโดยใช้ภาษา C++

ไลบรารี C ++ OCR เพื่อแปลงรูปภาพเป็นข้อความ

Aspose เสนอ ไลบรารี C++ OCR อันทรงพลังที่ใช้การเรียนรู้เชิงลึกเพื่อให้ผลลัพธ์ OCR ที่เชื่อถือได้มากขึ้นและใกล้เคียงกับผลลัพธ์ OCR ที่แม่นยำ คุณสามารถ ดาวน์โหลด ไฟล์ไลบรารีรวมทั้งโครงการตัวอย่างได้จาก GitHub

แปลงหน้ารูปภาพเป็นข้อความโดยใช้ C++

ก่อนอื่นให้ตรวจสอบสถานการณ์ที่รูปภาพมีข้อความหลายบรรทัด อาจเป็นกรณีนี้เมื่อคุณมีหนังสือที่สแกนซึ่งแต่ละหน้าของหนังสือมีบรรทัดข้อความจำนวนมาก ต่อไปนี้เป็นขั้นตอนในการแปลงรูปภาพเป็นข้อความในกรณีนี้

  • กำหนดเส้นทางของรูปภาพในตัวแปรสตริง
  • เตรียมบัฟเฟอร์เพื่อจัดเก็บผลลัพธ์ OCR
  • ดำเนินการ OCR โดยใช้ฟังก์ชัน aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize)
  • พิมพ์ผลลัพธ์หรือบันทึกไว้ในไฟล์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีดำเนินการ OCR และแปลงรูปภาพเป็นข้อความโดยใช้ C++

std::string image_path = "sample.png";

// เตรียมบัฟเฟอร์สำหรับผลลัพธ์ (ในสัญลักษณ์ len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// ดำเนินการ OCR
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);

//ผลการพิมพ์
std::wcout << buffer << L"\n"; 

ดำเนินการ OCR สำหรับรูปภาพที่มีบรรทัดเดียวโดยใช้ C ++

ในตัวอย่างก่อนหน้านี้ เราได้แปลงรูปภาพที่มีบรรทัดข้อความหลายบรรทัด อย่างไรก็ตาม อาจมีบางกรณีที่รูปภาพมีข้อความเพียงบรรทัดเดียว เช่น คำอธิบายภาพหรือสโลแกน ต่อไปนี้เป็นขั้นตอนในการดำเนินการ OCR ในกรณีดังกล่าว

  • ใช้ตัวแปรสตริงเพื่อกำหนดเส้นทางของรูปภาพ
  • สร้างบัฟเฟอร์เพื่อเก็บผลลัพธ์ OCR
  • ดำเนินการ OCR โดยใช้ฟังก์ชัน aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize)
  • บันทึกหรือพิมพ์ผลลัพธ์ OCR

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีดำเนินการ OCR บนรูปภาพที่มีข้อความบรรทัดเดียวโดยใช้ C++

std::string image_path = "sample_line.jpg";

// เตรียมบัฟเฟอร์สำหรับผลลัพธ์ (ในสัญลักษณ์ len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// ดำเนินการ OCR
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);

//ผลการพิมพ์
std::wcout << buffer << L"\n";

แปลงพื้นที่เฉพาะของรูปภาพเป็นข้อความใน C++

คุณยังสามารถปรับแต่ง API เพื่อจำกัดพื้นที่ของภาพที่คุณต้องการดำเนินการ OCR ในกรณีนี้ คุณสามารถสร้างสี่เหลี่ยมผืนผ้าบนรูปภาพเพื่อเข้าถึงพื้นที่ที่ต้องการได้ ต่อไปนี้เป็นขั้นตอนในการแยกข้อความออกจากพื้นที่เฉพาะของรูปภาพ

  • กำหนดเส้นทางของรูปภาพในตัวแปรสตริง
  • เตรียมบัฟเฟอร์เพื่อจัดเก็บผลลัพธ์ OCR
  • ดำเนินการ OCR โดยใช้ฟังก์ชัน aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h)
  • พิมพ์ผลลัพธ์ OCR

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแปลงพื้นที่เฉพาะของรูปภาพเป็นข้อความโดยใช้ C++

std::string image_path = "sample_line.jpg";

// เตรียมบัฟเฟอร์สำหรับผลลัพธ์ (ในสัญลักษณ์ len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

int x = 138, y = 352, w = 2033, h = 537;

// ดำเนินการ OCR หรือพื้นที่ที่เลือก
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//ผลการพิมพ์
std::wcout << buffer << L"\n";

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีใช้ไลบรารี OCR ของ Aspose เพื่อแปลงรูปภาพเป็นข้อความใน C++ เราได้เห็นวิธีดำเนินการ OCR บนรูปภาพที่มีข้อความบรรทัดเดียวหรือหลายบรรทัด ตลอดจนอ่านข้อความจากพื้นที่เฉพาะของรูปภาพ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.OCR for C++ โดยใช้ เอกสารประกอบ

ดูสิ่งนี้ด้วย