API JavaScript OCR nguồn mở để tạo PDF có thể tìm kiếm
Thư viện JavaScript OCR hàng đầu để tạo PDF có thể tìm kiếm và thực hiện OCR (Nhận dạng ký tự quang học) và trích xuất văn bản từ cả hình ảnh (PNG, JPEG) và tệp PDF.
Scribe.js là gì?
Trong thế giới kỹ thuật số ngày nay, một lượng lớn thông tin quý giá bị kẹt trong các hình ảnh—ảnh chụp màn hình của thông báo lỗi, ảnh chụp tài liệu, slide từ bài thuyết trình, hoặc thậm chí meme với văn bản thông minh. Việc chuyển đổi thủ công văn bản này là một quá trình tẻ nhạt và dễ gây lỗi. Đây là lúc công nghệ Nhận dạng ký tự quang học (OCR) trở thành cứu cánh, và Scribe.js cung cấp một trong những cách thân thiện nhất với nhà phát triển để tích hợp nó vào các dự án web của bạn. Scribe.js là một thư viện JavaScript mã nguồn mở thực hiện OCR và trích xuất văn bản từ cả hình ảnh và tệp PDF. Khác với nhiều giải pháp OCR yêu cầu xử lý phía máy chủ hoặc gọi API bên ngoài, Scribe.js chạy hoàn toàn trên phía client, cho phép bạn kiểm soát toàn bộ dữ liệu và loại bỏ chi phí máy chủ cho các nhiệm vụ nhận dạng văn bản.
Scribe.js là một client JavaScript nhẹ cho Google Cloud Vision API. Tất cả các thao tác OCR diễn ra trực tiếp trong trình duyệt của người dùng hoặc môi trường Node.js của bạn, đảm bảo tính riêng tư và giảm chi phí hạ tầng máy chủ. Thư viện đã bao gồm hỗ trợ cho nhiều tính năng, chẳng hạn như tiền xử lý hình ảnh, quy trình làm việc thống nhất cho hình ảnh, phát hiện tự động, lớp PDF, lọc các trang có độ tin cậy thấp, lưu cache các engine OCR, v.v. Thư viện được xây dựng bằng JavaScript ESM hiện đại (ECMAScript Modules), giúp tích hợp dễ dàng vào quy trình phát triển web hiện đại mà không cần cấu hình build phức tạp. Cách tiếp cận ưu tiên nhà phát triển này có nghĩa là bạn có thể bắt đầu trích xuất văn bản từ tài liệu chỉ với vài dòng mã.
Bắt đầu với Scribe.js
Cách khuyến nghị để cài đặt Scribe.js là sử dụng npm. Vui lòng sử dụng lệnh sau để cài đặt một cách suôn sẻ
Cài đặt Scribe.js qua npm
npm install scribe.js-ocr Bạn cũng có thể cài đặt thủ công; tải xuống các tệp phát hành mới nhất trực tiếp từ GitHub.
Nhận dạng văn bản từ hình ảnh
Trường hợp sử dụng cơ bản nhất của thư viện Scribe.js là trích xuất văn bản từ các tệp hình ảnh. Thư viện hỗ trợ nhiều định dạng hình ảnh và có thể xử lý cả hình ảnh đơn lẻ và các lô nhiều hình ảnh trong một lần thao tác. Dưới đây là một ví dụ cơ bản minh họa việc trích xuất văn bản từ URL hình ảnh trong các ứng dụng JavaScript. Đoạn mã này trình bày API đơn giản mà Scribe.js cung cấp. Phương thức extractText nhận một mảng các URL hình ảnh và trả về một Promise giải quyết với văn bản đã nhận dạng.
Cách trích xuất văn bản từ hình ảnh bằng thư viện 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);
});
Tạo PDF có thể tìm kiếm bằng JavaScript
Một trong những tính năng mạnh mẽ nhất của Scribe.js là khả năng thêm các lớp văn bản ẩn vào các tệp PDF hiện có. Chức năng này biến các PDF dựa trên hình ảnh thành tài liệu có thể tìm kiếm được mà không làm thay đổi giao diện trực quan của chúng. Khi một lớp văn bản được thêm vào PDF, người dùng có thể tìm kiếm các từ hoặc cụm từ cụ thể trong tài liệu, chọn và sao chép văn bản từ những gì trông giống như một hình ảnh, sử dụng trình đọc màn hình và các công cụ hỗ trợ truy cập với tài liệu đã quét, cho phép các công cụ tìm kiếm và hệ thống quản lý tài liệu lập chỉ mục và nhiều hơn nữa.
Cách tạo tài liệu PDF có thể tìm kiếm bằng thư viện 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;
}
}
Phát hiện văn bản tài liệu nâng cao bằng JS
Đối với các hình ảnh của tài liệu có văn bản dày đặc và bố cục phức tạp (như một trang sách đã quét hoặc một tệp PDF xuất ra), thư viện Scribe.js cung cấp tính năng "Document Text Detection". Tính năng này cung cấp thông tin phong phú hơn nhiều, bao gồm các bộ phát hiện đoạn văn, từ và ngắt dòng, giúp bảo tồn cấu trúc của tài liệu gốc. Điều này rất hữu ích cho các ứng dụng mà bố cục và cấu trúc của tài liệu nguồn quan trọng, chẳng hạn như xử lý biểu mẫu, hoá đơn hoặc bố cục đa cột.
Cách thực hiện phát hiện văn bản nâng cao trong các ứng dụng 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);
});
Xử lý hàng loạt nhiều tệp bằng JavaScript
Trong các ứng dụng thực tế, các chuyên gia phần mềm thường cần xử lý nhiều tài liệu đồng thời. Scribe.js hỗ trợ xử lý hàng loạt ngay từ đầu, cho phép người dùng trích xuất văn bản từ nhiều hình ảnh hoặc PDF trong một thao tác duy nhất trong ứng dụng JavaScript. Ví dụ sau đây minh họa cách các nhà phát triển phần mềm có thể xử lý một lô tài liệu bằng các lệnh JavaScript.
Cách xử lý một loạt tài liệu bằng thư viện 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');
});