1. Товары
  2.   OCR
  3.   JavaScript
  4.   Scribe.js
 
  

Открытый 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), что делает её простой для интеграции в современные веб‑разработки без необходимости сложных конфигураций сборки. Такой подход, ориентированный на разработчиков, позволяет начать извлекать текст из документов всего несколькими строками кода.

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');
  });
 Русский