Skip to content
/ ocr Public

High accurate text detection (OCR) Javascript/Typescript library that runs on Node.js, Browser, React Native and C++. Based on PaddleOCR and ONNX runtime

License

Notifications You must be signed in to change notification settings

gutenye/ocr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7a95169 · Dec 13, 2024
May 20, 2024
May 20, 2024
Oct 11, 2024
Dec 13, 2024
May 12, 2024
May 9, 2024
May 9, 2024
May 17, 2024
May 1, 2024
May 28, 2024
May 20, 2024
May 6, 2024
Dec 13, 2024
May 8, 2024
Dec 13, 2024
May 8, 2024
May 20, 2024

Repository files navigation

Guten OCR

Demo | Roadmap

an OCR Javascript library runs on Node.js, Browser, React Native and C++

Based on PaddleOCR and ONNX Runtime, supports PP-OCRv4 model

Getting Started

Node

Example

bun add @gutenye/ocr-node
import Ocr from '@gutenye/ocr-node'
const ocr = await Ocr.create()
const result = await ocr.detect('a.jpg')

Browser

Example

bun add @gutenye/ocr-browser
import Ocr from '@gutenye/ocr-browser'
const ocr = await Ocr.create({
  models: {
    detectionPath: '/assets/ch_PP-OCRv4_det_infer.onnx',
    recognitionPath: '/assets/ch_PP-OCRv4_rec_infer.onnx',
    dictionaryPath: '/assets/ppocr_keys_v1.txt'
  }
})
const result = await ocr.detect('/a.jpg')

React Native

Example

bun add @gutenye/ocr-react-native
import Ocr from '@guenye/ocr-react-native'
const ocr = await Ocr.create()
const result = await ocr.detect('a.jpg')

C++

Example

#include "native-ocr.h"
NativeOcr* ocr = new NativeOcr(..)
auto result = ocr->detect("a.jpg");

API Reference

Ocr.create({
  models?: {
    detectionPath: string
    recognitionPath: string
    dictionaryPath: string
  },
  isDebug?: boolean
  debugOutputDir?: string // Node only
  recognitionImageMaxSize?: number // RN only
  detectionThreshold?: number // RN only
  detectionBoxThreshold?: number // RN only
  detectionUnclipRatiop?: number // RN only
  detectionUseDilate?: boolean // RN only
  detectionUsePolygonScore?: boolean // RN only
  useDirectionClassify?: boolean // RN only
  onnxOptions?: {}       // Node only. Pass to ONNX Runtime
}): Promise<Ocr>

ocr.detect(imagePath, { 
  onnxOptions?: {}     // Node only. Pass to ONNX Runtime
}): Promise<TextLine[]>

TextLine {
  text: string
  score: number
  frame: { top, left, width, height }
}

Development

  • Requires Git LFS to clone the repo
brew install git-lfs 
git clone [email protected]:gutenye/ocr.git

Related Projects

Name Platforms Note
eSearch-OCR Electron
paddleocr-onnx Node Recogination part is incomplete
ocrjs Node Recogination part is incomplete
Paddle-Lite-Demo Mobile, C++