id-scanner-lib
Version:
Browser-based ID card, QR code, and face recognition scanner with liveness detection
281 lines (254 loc) • 7.63 kB
TypeScript
/**
* Type definitions for tesseract.js
*/
declare module "tesseract.js" {
// Based on https://github.com/naptha/tesseract.js/blob/master/src/index.d.ts
// and https://github.com/naptha/tesseract.js/blob/master/docs/api.md
export interface Point {
x: number
y: number
}
export interface Bbox {
x0: number
y0: number
x1: number
y1: number
}
export interface Baseline {
x0: number
y0: number
x1: number
y1: number
has_descenders: boolean
has_ascenders: boolean
}
export interface Word {
symbols: Symbol[]
choices: Choice[]
text: string
confidence: number
baseline: Baseline
bbox: Bbox
is_numeric: boolean
in_dictionary: boolean
direction: string
language: string
is_from_dictionary: boolean
is_fuzzy: boolean
is_certain: boolean
is_bold: boolean
is_italic: boolean
is_underlined: boolean
is_monospace: boolean
is_serif: boolean
is_smallcaps: boolean
font_id: number
font_size: number
font_name: string
}
export interface Symbol {
choices: Choice[]
image: null | HTMLImageElement // Or string if it's a path/URL
text: string
confidence: number
baseline: Baseline
bbox: Bbox
is_superscript: boolean
is_subscript: boolean
is_dropcap: boolean
}
export interface Choice {
text: string
confidence: number
}
export interface Line {
words: Word[]
text: string
confidence: number
baseline: Baseline
bbox: Bbox
}
export interface Paragraph {
lines: Line[]
text: string
confidence: number
baseline: Baseline
bbox: Bbox
is_ltr: boolean
}
export interface Block {
paragraphs: Paragraph[]
lines: Line[]
words: Word[]
text: string
confidence: number
baseline: Baseline
bbox: Bbox
blocktype: string
polygon: Point[]
}
export interface Page {
blocks: Block[]
confidence: number
html: string // HTML representation of the page
jobId?: string
text: string
lines: Line[]
oem: string
operator: string
paragraphs: Paragraph[]
psm: string
symbols: Symbol[]
version: string
words: Word[]
hocr?: string // hOCR output
tsv?: string // TSV output
}
export interface LoggerMessage {
jobId?: string
workerId?: string
status: string
progress: number
userfriendlyText?: string
}
export interface WorkerOptions {
langPath?: string
corePath?: string
workerPath?: string
logger?: (message: LoggerMessage) => void // More specific type for logger message <mcreference index="1" link="https://github.com/naptha/tesseract.js/blob/master/docs/api.md"></mcreference>
errorHandler?: (error: Error) => void
// Add other options based on documentation if needed
[key: string]: any // For other less common or dynamic options
}
export interface RecognizeResult {
data: Page // Use the detailed Page interface
}
export interface DetectResult {
data: {
tesseract_script_id: number | null
script: string | null
script_confidence: number | null
orientation_degrees: number | null
orientation_confidence: number | null
}
jobId?: string
}
export interface ConfigResult {
data: null
jobId?: string
}
export type ImageLike =
| HTMLImageElement
| HTMLCanvasElement
| File
| string
| Buffer
| ImageData // Common image types
export interface Worker {
load(jobId?: string): Promise<ConfigResult> // <mcreference index="4" link="https://github.com/naptha/tesseract.js/blob/master/src/index.d.ts"></mcreference>
loadLanguage(
langs?: string | string[],
jobId?: string
): Promise<ConfigResult> // <mcreference index="4" link="https://github.com/naptha/tesseract.js/blob/master/src/index.d.ts"></mcreference>
initialize(
langs?: string | string[],
oem?: OEM,
config?: string | Partial<InitOptions>,
jobId?: string
): Promise<ConfigResult> // <mcreference index="4" link="https://github.com/naptha/tesseract.js/blob/master/src/index.d.ts"></mcreference>
setParameters(
params: Partial<Parameters>,
jobId?: string
): Promise<ConfigResult> // <mcreference index="4" link="https://github.com/naptha/tesseract.js/blob/master/src/index.d.ts"></mcreference>
recognize(
image: ImageLike,
options?: Partial<RecognizeOptions>,
output?: Partial<OutputFormats>,
jobId?: string
): Promise<RecognizeResult> // <mcreference index="4" link="https://github.com/naptha/tesseract.js/blob/master/src/index.d.ts"></mcreference>
detect(
image: ImageLike,
options?: Partial<WorkerOptions>,
jobId?: string
): Promise<DetectResult> // <mcreference index="4" link="https://github.com/naptha/tesseract.js/blob/master/src/index.d.ts"></mcreference>
terminate(jobId?: string): Promise<ConfigResult> // <mcreference index="4" link="https://github.com/naptha/tesseract.js/blob/master/src/index.d.ts"></mcreference>
// Add other worker methods if present in the version you are targeting
// Example from docs for other methods like FS operations:
writeText?(
path: string,
text: string,
jobId?: string
): Promise<ConfigResult>
readText?(path: string, jobId?: string): Promise<ConfigResult>
removeFile?(path: string, jobId?: string): Promise<ConfigResult> // Assuming removeFile also returns ConfigResult or similar
FS?(method: string, args: any[], jobId?: string): Promise<any> // FS is more generic
}
// Based on Tesseract's OEM and PSM enums
export enum OEM {
TESSERACT_ONLY = 0,
LSTM_ONLY = 1,
TESSERACT_LSTM_COMBINED = 2,
DEFAULT = 3,
}
export enum PSM {
OSD_ONLY = 0,
AUTO_OSD = 1,
AUTO_ONLY = 2,
AUTO = 3,
SINGLE_COLUMN = 4,
SINGLE_BLOCK_VERT_TEXT = 5,
SINGLE_BLOCK = 6,
SINGLE_LINE = 7,
SINGLE_WORD = 8,
CIRCLE_WORD = 9,
SINGLE_CHAR = 10,
SPARSE_TEXT = 11,
SPARSE_TEXT_OSD = 12,
RAW_LINE = 13,
}
export interface Parameters {
tessedit_char_whitelist?: string
tessedit_pageseg_mode?: PSM
// Add other Tesseract parameters as needed
[key: string]: any // For flexibility with other parameters
}
export interface RecognizeOptions {
rectangle?: Bbox // For recognizing a specific region
rectangles?: Bbox[] // For recognizing multiple regions
// Add other recognize specific options
[key: string]: any
}
export interface OutputFormats {
text?: boolean
blocks?: boolean
hocr?: boolean
tsv?: boolean
pdf?: boolean // If PDF output is supported
// Add other output formats
[key: string]: any
}
export interface InitOptions {
load_system_dawg?: boolean
load_freq_dawg?: boolean
load_punc_dawg?: boolean
load_number_dawg?: boolean
load_unambig_dawg?: boolean
load_bigram_dawg?: boolean
load_fixed_length_dawgs?: boolean
// Add other init-only parameters
[key: string]: any
}
export function createWorker(options?: Partial<WorkerOptions>): Worker // 修正返回类型为 Worker 而非 Promise<Worker>
export function setLogging(logging: boolean): void
export function recognize(
image: ImageLike,
langs?: string | string[],
options?: Partial<RecognizeOptions & WorkerOptions>
): Promise<RecognizeResult>
export function detect(
image: ImageLike,
options?: Partial<WorkerOptions>
): Promise<DetectResult>
// 正确导出 OEM 和 PSM 枚举
export { OEM, PSM }
}