Открытый OCR JavaScript API для создания поисковых PDF
Ведущая JavaScript OCR‑библиотека для создания поисковых 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');
});