OCR API на JavaScript з відкритим кодом для створення пошукових PDF
Ведуча бібліотека OCR на JavaScript для створення пошукових PDF, що виконує OCR (оптичне розпізнавання символів) та витягує текст як з зображень (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');
});