ไลบรารี JavaScript ฟรีสำหรับแยกข้อความจากภาพสแกนและแบบฟอร์ม
ไลบรารี JavaScript แบบโอเพ่นซอร์สสำหรับการจดจำอักขระด้วยแสง (OCR) เพื่อแยกข้อความจากภาพสแกนสีดำ-ขาวและเอกสาร พร้อมการเตรียมภาพและการสนับสนุนเทมเพลตในเว็บหรือแอป Node.js
ในโลกดิจิทัลสมัยใหม่ เทคโนโลยีการจดจำอักขระด้วยแสง (OCR) มีบทบาทสำคัญในการแปลงภาพสแกน, โน้ตมือเขียน, หรือเอกสารพิมพ์ให้เป็นข้อมูลที่สามารถแก้ไขและค้นหาได้ สำหรับนักพัฒนา JavaScript ที่มองหาโซลูชันที่มีน้ำหนักเบาและเปิดเผยแหล่งที่มา Guten OCR นำเสนอทางเลือกที่น่าสนใจ เครื่องมือ OCR ที่พัฒนาด้วย JavaScript นี้ออกแบบโดยคำนึงถึงความเรียบง่าย ทำให้เหมาะสำหรับการฝังฟีเจอร์ OCR ลงในแอปพลิเคชันที่ทำงานบนเบราว์เซอร์หรือ Node.js มีคุณลักษณะสำคัญหลายอย่างในไลบรารี เช่น การจดจำอักขระด้วยเทมเพลต, การทำเกณฑ์ภาพและการทำไบนารี, การแยกอักขระ, การจับคู่เทมเพลตและการประกอบข้อความ, การสนับสนุนโค้ดฐานแบบโมดูลาร์ เป็นต้น มันมุ่งเน้นการจดจำข้อความพิมพ์จากเอกสารสแกนสีขาว-ดำและเหมาะที่สุดสำหรับข้อความที่จัดรูปแบบอย่างดี เช่น หนังสือหรือแบบฟอร์ม
Guten OCR เป็นเครื่องมือ OCR แบบโอเพนซอร์สที่เขียนด้วย JavaScript สร้างโดย Gutenye แตกต่างจากเครื่องมือ OCR ขนาดใหญ่ที่ต้องพึ่งพาไลบรารีภายนอกหรือการตั้งค่าที่ซับซ้อน Guten OCR ถูกเขียนทั้งหมดด้วย JavaScript หมายความว่ามันสามารถทำงานในเว็บบราวเซอร์หรือบนเซิร์ฟเวอร์ด้วย Node.js ไลบรารีนี้ใช้เทคนิคการประมวลผลภาพพื้นฐานเพื่อแยกอักขระและระบุด้วยระบบการจดจำรูปแบบอักขระ แม้ว่ามันอาจยังไม่สามารถแข่งขันกับเครื่องมือ OCR เชิงพาณิชย์อย่าง Tesseract ในด้านการสนับสนุนหลายภาษา หรือข้อความที่เขียนด้วยมือได้เท่าเทียม แต่ความเรียบง่ายและความสามารถในการปรับแต่งทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับโครงการการศึกษา แนวคิดต้นแบบ หรือฟีเจอร์ OCR ที่ฝังอยู่ในเว็บแอปพลิเคชันแบบกำหนดเอง ต่างจาก Tesseract หรือเครื่องมือขนาดใหญ่อื่น ๆ Guten OCR ถูกออกแบบให้มีน้ำหนักเบาและมุ่งเน้นเฉพาะ—ทำให้เป็นจุดเริ่มต้นที่ดีสำหรับผู้ที่ต้องการเข้าใจการทำงานของ OCR ภายใน
เริ่มต้นใช้งาน Guten OCR
วิธีที่แนะนำในการติดตั้ง Guten OCR คือการใช้ Brew. โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่ราบรื่น
ติดตั้ง Guten OCR ผ่าน Brew
brew install git-lfs ติดตั้ง Guten OCR ผ่าน GitHub
git clone git@github.com:gutenye/ocr.git คุณยังสามารถติดตั้งด้วยตนเองได้; ดาวน์โหลดไฟล์เวอร์ชันล่าสุดโดยตรงจากที่เก็บ GitHub.
การเตรียมภาพก่อนการดำเนินการ OCR
ไลบรารี Guten OCR แบบโอเพ่นซอร์สถูกเขียนทั้งหมดด้วย JavaScript ทำให้สามารถทำงานได้ทั้งในเบราว์เซอร์และสภาพแวดล้อม Node.js มันรวมฟังก์ชันการเตรียมภาพในตัวเพื่อเพิ่มความแม่นยำของการจดจำ รองรับการทำ Binarization ของภาพ (แปลงเป็นสีขาวดำ) การลดสัญญาณรบกวน การแก้ไขการเอียงและอื่น ๆ ตัวอย่างต่อไปนี้แสดงให้เห็นว่าผู้พัฒนาสามารถใช้ขั้นตอนการเตรียมภาพหลายขั้นตอนก่อนดำเนินการ OCR บนภาพได้อย่างไร
วิธีการใช้การประมวลผลภาพก่อนการทำ OCR ผ่านไลบรารี JavaScript?
const { preprocess } = require('guten-ocr');
// Apply multiple preprocessing steps
const processedImage = preprocess(imageData, [
'grayscale', // Convert to grayscale
'binarize', // Convert to black and white
'deskew', // Correct skew
'denoise' // Reduce noise
]);
// Then perform OCR on the processed image
ocr.recognize(processedImage).then(/* ... */);
การจดจำอักขระผ่านเทมเพลต
ไลบรารี JavaScript Guten OCR ได้ให้การสนับสนุนเต็มรูปแบบสำหรับการทำงาน OCR ด้วยการใช้เทมเพลตภายในแอปพลิเคชัน JavaScript ใจกลางของ Guten OCR คือระบบการจับคู่เทมเพลต แทนการฝึกโมเดลแมชชีนเลิร์นนิง มันใช้รูปแบบอักขระที่กำหนดไว้ล่วงหน้า สิ่งนี้ทำให้ระบบเร็วขึ้นและเข้าใจง่ายขึ้น แต่มีความไวต่อความสอดคล้องของฟอนต์และเลย์เอาต์มากขึ้น เพื่อทำภารกิจนี้ ไลบรารีจะเรนเดอร์อักขระแต่ละตัว (A–Z, a–z, 0–9, เป็นต้น) บนแคนวาสและจากนั้นเมทริกซ์ไบนารีสำหรับแต่ละอักขระจะกลายเป็นเทมเพลตอ้างอิง เมื่อวิเคราะห์ภาพ ไลบรารีจะเปรียบเทียบส่วนของภาพกับเทมเพลตเหล่านี้เพื่อค้นหาการจับคู่ที่ดีที่สุด โดยใช้การสแกนเส้นแนวตั้งและแนวนอนร่วมกันเพื่อค้นหากล่องขอบเขต
การแยกส่วนอักขระผ่านไลบรารี OCR
ไลบรารี JavaScript แบบโอเพ่นซอร์ส Guten OCR ช่วยให้นักพัฒนาซอฟต์แวร์สามารถทำการแยกส่วนอักขระได้อย่างง่ายดาย เมื่อภาพถูกทำให้เป็นไบนารี ขั้นตอนต่อไปคือการแยกอักขระแต่ละตัว Guten OCR สแกนแถวและคอลัมน์เพื่อค้นหาพื้นที่ที่มีพิกเซลสีดำหนาแน่น แยกออกเป็นอักขระที่เป็นไปได้ ตัวอย่างต่อไปนี้แสดงให้เห็นว่าผู้พัฒนาซอฟต์แวร์สามารถทำการแยกส่วนอักขระโดยใช้ไลบรารี OCR ของ JavaScript อย่างไร
วิธีการทำการแยกอักขระโดยใช้ไลบรารี JavaScript?
const segment = require('guten-ocr/segment');
const boxes = segment(binarized); // returns array of [x, y, width, height]