API OCR JavaScript แบบเปิดต้นฉบับเพื่อสร้าง PDF ที่สามารถค้นหาได้
ไลบรารี OCR JavaScript ชั้นนำสำหรับสร้าง PDF ที่สามารถค้นหาได้และทำการ OCR (Optical Character Recognition) พร้อมสกัดข้อความจากทั้งภาพ (PNG, JPEG) และไฟล์ PDF.
อะไรคือ Scribe.js?
ในโลกดิจิทัลของวันนี้ มีข้อมูลอันมีค่าจำนวนมหาศาลที่ถูกเก็บอยู่ในภาพ—ภาพหน้าจอของข้อความแสดงข้อผิดพลาด, ภาพถ่ายของเอกสาร, สไลด์จากการนำเสนอ, หรือแม้แต่มีมที่มีข้อความเจ๋งๆ การถอดข้อความเหล่านี้ด้วยมือเป็นกระบวนการที่น่าเบื่อและเสี่ยงต่อข้อผิดพลาด นี่คือจุดที่เทคโนโลยีการรู้จำอักขระด้วยแสง (OCR) เข้ามาช่วยเหลือ, และ Scribe.js นำเสนอวิธีที่เป็นมิตรต่อผู้พัฒนาที่สุดในการผสานรวมเข้ากับโครงการเว็บของคุณ Scribe.js เป็นไลบรารี JavaScript แบบโอเพนซอร์สที่ทำการ OCR และดึงข้อความจากทั้งภาพและไฟล์ PDF ต่างจากโซลูชัน OCR หลายๆ อย่างที่ต้องการการประมวลผลด้านหลังหรือการเรียก API ภายนอก, Scribe.js ทำงานทั้งหมดบนฝั่งไคลเอนต์, ให้คุณควบคุมข้อมูลของคุณได้อย่างเต็มที่และขจัดค่าใช้จ่ายเซิร์ฟเวอร์สำหรับงานการรู้จำข้อความ
Scribe.js เป็นไคลเอนต์ JavaScript ที่มีน้ำหนักเบาสำหรับ Google Cloud Vision API การทำงาน OCR ทั้งหมดเกิดขึ้นโดยตรงในเบราว์เซอร์ของผู้ใช้หรือสภาพแวดล้อม Node.js ของคุณ ทำให้ความเป็นส่วนตัวได้รับการคุ้มครองและลดค่าใช้จ่ายโครงสร้างพื้นฐานของเซิร์ฟเวอร์ ไลบรารีนี้ได้รวมการสนับสนุนคุณลักษณะต่าง ๆ เช่น การเตรียมภาพล่วงหน้า, กระบวนการทำงานแบบรวมสำหรับภาพ, การตรวจจับอัตโนมัติ, การจัดชั้น PDF, การกรองหน้าที่มีความมั่นใจต่ำ, การแคชเอนจิน OCR เป็นต้น ไลบรารีสร้างด้วย JavaScript สมัยใหม่แบบ ESM (ECMAScript Modules) ทำให้การผสานรวมเข้าสู่กระบวนการพัฒนาเว็บสมัยใหม่เป็นเรื่องง่ายโดยไม่ต้องกำหนดค่าการสร้างที่ซับซ้อน วิธีการที่เน้นนักพัฒนานี้หมายความว่าคุณสามารถเริ่มดึงข้อความจากเอกสารได้ด้วยเพียงไม่กี่บรรทัดของโค้ด
เริ่มต้นใช้งาน Scribe.js
วิธีที่แนะนำในการติดตั้ง Scribe.js คือการใช้ npm โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่ราบรื่น
ติดตั้ง Scribe.js ผ่าน npm
npm install scribe.js-ocr คุณสามารถติดตั้งด้วยตนเองได้; ดาวน์โหลดไฟล์รุ่นล่าสุดโดยตรงจากที่เก็บ GitHub.
การจดจำข้อความจากรูปภาพ
กรณีการใช้งานพื้นฐานที่สุดของไลบรารี Scribe.js คือการสกัดข้อความจากไฟล์รูปภาพ ไลบรารีนี้รองรับรูปแบบภาพต่าง ๆ และสามารถประมวลผลทั้งภาพเดี่ยวและชุดของหลายภาพในหนึ่งการทำงาน นี่คือตัวอย่างพื้นฐานที่แสดงการสกัดข้อความจาก URL ของรูปภาพภายในแอป JavaScript โค้ดตัวอย่างนี้แสดง API ที่เรียบง่ายของ Scribe.js วิธี extractText รับอาร์เรย์ของ URL รูปภาพและคืนค่า Promise ที่ให้ผลลัพธ์เป็นข้อความที่ถูกจดจำ
วิธีดึงข้อความจากภาพด้วยไลบรารี JavaScript?
import scribe from 'scribe.js-ocr';
// Extract text from a single image
scribe.extractText(['https://example.com/sample-image.png'])
.then((result) => {
console.log('Extracted text:', result);
})
.catch((error) => {
console.error('OCR failed:', error);
});
สร้าง PDF ที่ค้นหาได้ด้วย JavaScript
หนึ่งในคุณสมบัติที่ทรงพลังที่สุดของ Scribe.js คือความสามารถในการเพิ่มชั้นข้อความที่มองไม่เห็นลงในไฟล์ PDF ที่มีอยู่ ฟังก์ชันนี้ทำให้ PDF ที่เป็นภาพกลายเป็นเอกสารที่สามารถค้นหาได้โดยไม่เปลี่ยนแปลงลักษณะภาพ เมื่อเพิ่มชั้นข้อความลงใน PDF ผู้ใช้สามารถค้นหาคำหรือวลีเฉพาะในเอกสาร เลือกและคัดลอกข้อความจากสิ่งที่ดูเหมือนเป็นภาพ ใช้โปรแกรมอ่านหน้าจอและเครื่องมือการเข้าถึงกับเอกสารสแกน เปิดใช้งานการทำดัชนีโดยเครื่องมือค้นหาและระบบจัดการเอกสาร เป็นต้น
วิธีสร้างเอกสาร PDF ที่สามารถค้นหาได้ด้วยไลบรารี JavaScript?
import scribe from 'scribe.js-ocr';
// Add searchable text layer to an image-based PDF
async function makeSearchablePDF(inputPdfUrl) {
try {
// First, perform OCR on the PDF
const ocrResult = await scribe.extractText([inputPdfUrl]);
// Then create a new PDF with the text layer embedded
const searchablePdf = await scribe.createSearchablePDF(
inputPdfUrl,
ocrResult
);
// The resulting PDF maintains the original appearance
// but now contains selectable, searchable text
return searchablePdf;
} catch (error) {
console.error('Failed to create searchable PDF:', error);
throw error;
}
}
การตรวจจับข้อความในเอกสารขั้นสูงด้วย JS
สำหรับภาพของเอกสารที่มีข้อความหนาแน่นและรูปแบบซับซ้อน (เช่นหน้าหนังสือที่สแกนหรือการส่งออกเป็น PDF) ไลบรารี Scribe.js มีฟีเจอร์ "Document Text Detection" ซึ่งให้ข้อมูลที่ละเอียดมากขึ้น รวมถึงตัวตรวจจับย่อหน้า คำ และการแบ่งบรรทัด ซึ่งช่วยรักษาโครงสร้างของเอกสารต้นฉบับได้อย่างดี ฟีเจอร์นี้มีประโยชน์อย่างยิ่งสำหรับแอปพลิเคชันที่ต้องการรักษาเลย์เอาต์และโครงสร้างของวัสดุต้นทาง เช่น การประมวลผลแบบฟอร์ม ใบแจ้งหนี้ หรือเลย์เอาต์หลายคอลัมน์
วิธีทำการตรวจจับข้อความขั้นสูงในแอป JavaScript?
const Scribe = require('scribejs');
const serviceAccountKey = require('./path-to-your-key.json');
const scribe = new Scribe(serviceAccountKey);
const documentImageUrl = 'https://example.com/scanned-invoice.png';
// Use the `documentText` method for advanced detection
scribe.documentText(documentImageUrl)
.then(fullTextAnnotation => {
// The fullTextAnnotation object contains detailed data
console.log('Full Document Text:');
console.log(fullTextAnnotation.text); // The plain text of the entire document
// You can also iterate through pages, blocks, paragraphs, and words
fullTextAnnotation.pages.forEach(page => {
page.blocks.forEach(block => {
console.log('\nBlock Confidence:', block.confidence);
block.paragraphs.forEach(paragraph => {
console.log(paragraph.text);
});
});
});
})
.catch(error => {
console.error('Document OCR Error:', error);
});
การประมวลผลหลายไฟล์เป็นชุดด้วย JavaScript
ในแอปพลิเคชันจริง ผู้เชี่ยวชาญด้านซอฟต์แวร์มักต้องประมวลผลเอกสารหลายฉบับพร้อมกัน Scribe.js รองรับการประมวลผลแบบชุดตั้งแต่เริ่มต้น ทำให้ผู้ใช้สามารถดึงข้อความจากหลายภาพหรือ PDF ในการดำเนินการเดียวภายในแอปพลิเคชัน JavaScript ตัวอย่างต่อไปนี้แสดงให้เห็นว่าผู้พัฒนาซอฟต์แวร์สามารถประมวลผลชุดเอกสารได้อย่างไรโดยใช้คำสั่ง JavaScript
วิธีประมวลผลชุดเอกสารด้วยไลบรารี JavaScript?
import scribe from 'scribe.js-ocr';
// Process multiple documents at once
async function batchProcess(fileUrls) {
try {
// Pass an array of URLs to process multiple files
const results = await scribe.extractText(fileUrls);
// Results are returned in the same order as input
results.forEach((text, index) => {
console.log(`Document ${index + 1} text:`, text);
});
return results;
} catch (error) {
console.error('Batch processing failed:', error);
throw error;
}
}
// Process a batch of documents
const documents = [
'https://example.com/receipt1.jpg',
'https://example.com/receipt2.jpg',
'https://example.com/invoice.pdf'
];
batchProcess(documents)
.then(allText => {
console.log('All documents processed successfully');
});