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) ทำให้การผสานรวมเข้าสู่กระบวนการพัฒนาเว็บสมัยใหม่เป็นเรื่องง่ายโดยไม่ต้องกำหนดค่าการสร้างที่ซับซ้อน วิธีการที่เน้นนักพัฒนานี้หมายความว่าคุณสามารถเริ่มดึงข้อความจากเอกสารได้ด้วยเพียงไม่กี่บรรทัดของโค้ด

Previous Next

เริ่มต้นใช้งาน 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');
  });
 ไทย