Socket
Socket
Sign inDemoInstall

ocr-parser

Package Overview
Dependencies
1
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    ocr-parser

Fast and efficient DOM-less OCR parser for use in browsers (including Workers) and Node


Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

ocr-parser

This library provides a simple interface to parse OCR data from a stream, buffer or string. It does not rely on any DOM APIs and can therefore be used in contexts where there is no built-in support for XML parsing, most notabily in Web Workers and Service Workers.

Currently the library supports hOCR and ALTO OCR markup.

Usage

Before OCR markup can be parsed, the XML parser has to be initialized. The library uses sax-wasm under the hood, which needs to be initialized with its WASM code before it can be used. By default, the WASM will be loaded from unpkg.com, but you can also provide a custom callback to the initialize function to load the WASM from a different source. Make sure that the WASM matches the versio of sax-wasm used by this library (currently 2.2.4).

import { initialize as initializeXmlParser } from 'ocr-parser';

// Load from unpkg.com
await initializeXmlParser();

// Load from custom source (e.g. from base64-encoded constant)
await initializeXmlParser(() => Promise.resolve(WASM_BLOB));

Once the parser has been initialized, call parseOcrPages or any of the format-specific functons (parseAltoPages, parseHocrPages) with your markup to retrieve an asynchronous generator over all the pages in the markup.

import { parseOcrPages } from 'ocr-parser';

for await (const page of parseOcrPages(markup, 'hocr')) {
  // Do something with the page
  console.log(page);
}

Data Structures

The markup is parsed into a simple hierarchical data structure:

OcrPage
└── OcrBlock
    └── OcrParagraph
        └── OcrLine
            ├── OcrWord
            └── string

The OcrBlock and OcrParagraph levels are only present if they are encoded in the markup. Every element has getters for any of the lower levels, so yo can simply access OcrPage#words to get a flat list of all words on the page. string children of OcrLine elements are 'stray' text nodes (including whitespace) that are not explicitely encoded as words (and thus have no associated bounding box).

Keywords

FAQs

Last updated on 25 Feb 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc