mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-19 06:30:10 +08:00
* build: 添加 tesseract.js 及其类型定义依赖
* feat(ocr): 添加OCR类型定义文件以支持OCR功能扩展
* feat(ocr): 添加 Tesseract OCR 提供程序配置
* feat(ocr): 添加Tesseract.js的logo
* refactor(settings): 重构文档预处理设置模块结构
将PreprocessSettings重命名为DocProcessSettings并调整文件结构
更新相关路由和组件引用以保持功能一致性
* refactor(config): 重命名OCR_PROVIDER_CONFIG为BUILTIN_OCR_PROVIDERS以更准确描述用途
* refactor(ocr): 更改文件名
* refactor(ocr): 将获取OCR提供商logo的功能移动到utils目录
将getOcrProviderLogo函数从config/ocr.ts移动到utils/ocr.ts,保持功能集中
* refactor(ocr): 重构OCR配置结构以支持默认提供者
将内置OCR提供者数组重构为单独定义的常量,并添加默认OCR提供者映射。这提高了代码的可维护性并支持未来扩展。
* feat(store): 添加OCR状态管理切片
实现OCR提供商的增删改查功能,使用Redux Toolkit管理OCR相关状态
* feat(types): 添加图片文件类型守卫函数
添加 ImageFileMetadata 类型和 isImageFile 类型守卫函数,用于检查文件是否为图片类型
* feat(ocr): 添加对OCR支持文件类型的类型定义和校验函数
添加SupportedOcrFileType类型和isSupportedOcrFileType校验函数
添加SupportedOcrFile类型和isSupportedOcrFile校验函数
* feat(ocr): 添加OCR功能支持
实现基于Tesseract的OCR功能,包括文件类型检查、服务接口和IPC通信
新增OCR相关类型定义和服务实现
* refactor(OcrService): 更新日志上下文为'main:OcrService'
* feat(ocr): 添加OCR服务基础功能
实现OCR服务的基础功能,通过调用window.api.ocr接口处理支持的文件类型
* feat(store): 添加ocr模块到redux store
* feat(ocr): 添加OCR功能支持及文件类型校验
添加OCR功能钩子useOcr,支持图片文件识别
添加不支持文件类型的错误提示国际化文案
* refactor(ocr): 重命名updatePreprocessProvider为updateOcrProvider以保持命名一致性
* feat(ocr): 添加设置图片OCR提供商的功能
* refactor(ocr): 统一OCR类型导入路径
将所有OCR相关类型从'@renderer/types/ocr'改为从'@renderer/types'或'@types'导入
优化DEFAULT_OCR_PROVIDER类型定义
* feat(store): 更新持久化存储版本并添加OCR配置迁移
添加137版本迁移逻辑,初始化OCR提供者和默认图像提供者配置
* feat(ocr): 添加OCR服务设置界面及提供商选择功能
实现OCR服务设置界面,包含图片OCR提供商的选择功能
修复ocr.ts中imageProvider的类型定义
添加相关国际化文本
* fix(ocr): 添加图像大小检查并优化错误处理
检查图像文件大小是否超过50MB限制
使用buffer读取文件替代直接路径识别
简化错误处理逻辑,直接抛出原始错误
* feat(OCR服务): 支持base64字符串作为OCR输入
扩展tesseractOcr函数以接受base64字符串或图像文件作为输入
* build: 将 tesseract.js 从 devDependencies 移至 dependencies
确保生产环境能正确使用 tesseract.js 功能
* refactor(ocr): 将Tesseract服务文件移动到tesseract子目录并更新配置
* refactor(TesseractService): 添加日志记录并更新worker配置
添加loggerService用于记录worker日志,并更新createWorker配置以使用自定义logger
* feat(i18n): 添加OCR功能的多语言支持
* refactor(preload): 移动OCR类型定义到共享类型文件
将OCR相关的类型定义(OcrProvider, OcrResult, SupportedOcrFile)从渲染进程类型文件移动到共享类型文件@types,以提高代码复用性和维护性
* refactor(ocr): 修改tesseractOcr返回完整识别结果而非仅文本
返回完整识别结果以便后续处理使用更多OCR信息,同时简化imageOcr中的条件判断逻辑
* fix(ocr): 修复文件类型与OCR提供者能力不匹配时的错误抛出位置
将错误抛出语句移至else分支
* refactor(ocr): 简化 DEFAULT_OCR_PROVIDER 的类型定义
* fix(ocr): 改进OCR处理中的消息管理和错误处理
在useOcr钩子中统一管理OCR处理的消息提示,并完善错误处理逻辑
移除TranslatePage中重复的消息管理代码,简化OCR处理流程
* feat(i18n): 添加OCR相关的错误和状态翻译文本
* fix(useOcr): 修复未支持文件类型错误抛出位置
将不支持的OCR文件类型错误抛出逻辑移至条件判断内
* refactor(ocr): ocrImage实现使用OcrService并更新日志上下文
将ocrImage函数从useOcr钩子移动到OcrService中,提高代码复用性
更新日志服务上下文从'main'改为'renderer'以更准确反映模块位置
* style(TabContainer): 移除多余的空行并保持代码整洁
* refactor(ocr): 简化OCR文件类型检查逻辑
使用现有的isImageFile函数替代冗余的类型检查逻辑,提高代码复用性
* fix: 将迁移错误日志从136更新为137
* feat(ocr): enhance Tesseract service with language support and worker management
- Added support for multiple Tesseract languages: Chinese (Simplified and Traditional) and English.
- Refactored Tesseract worker management into a class for better encapsulation and reuse.
- Introduced methods to dynamically determine language path based on IP country and manage worker lifecycle.
* update cn url
* support cn data
* change to asyn
* use register design mode
* add type
* use bind function
* refactor(ipc): 简化OCR处理程序参数
* refactor(ocr): 修改ocrProviderCapabilityRecord类型定义
允许只定义部分能力
* refactor(ocr): 将Tesseract相关配置移至服务内部
将语言列表和下载URL常量从共享配置移至Tesseract服务内部
使用常量定义图片大小阈值以提高可读性
* refactor(ocr): 统一使用 SupportedOcrFile 类型替换 FileMetadata
更新 OCR 服务及其 Tesseract 实现,使用 SupportedOcrFile 类型替代原有的 FileMetadata 类型,以提高类型安全性和一致性。同时在 OcrService 中添加重复注册的警告日志。
* refactor(ocr): 重构OCR类型定义以支持模型和API配置
将OCR提供者配置拆分为独立类型,增加模型能力记录和API配置类型检查
添加OCR处理程序类型定义,为未来扩展提供更好的类型支持
* refactor(OcrService): 移除重复的OcrHandler类型定义
已在@types中定义OcrHandler类型,移除重复定义以提高代码一致性
* refactor(ocr): 将OcrService移动到ocr目录下并更新引用路径
* feat(ocr): 添加OCR API客户端工厂及示例实现
实现OCR API客户端工厂模式,支持根据不同提供商创建对应的客户端
新增OcrBaseApiClient作为基础类,提供通用功能
添加OcrExampleApiClient作为示例实现
修改OcrService以使用新的客户端工厂
* refactor(ocr): 添加日志记录以跟踪OCR文件处理
在OCR服务中添加日志记录功能,便于跟踪文件处理过程
* fix(deps): 更新 tesseract.js 依赖并添加补丁文件
修复 tesseract.js 类型定义问题并添加语言常量支持
* refactor(ocr): 移除注释掉的tesseract语言映射代码
使用Tesseract.js的LanguageCode类型替代硬编码的语言列表,提高类型安全性
* feat(ocr): 添加 Tesseract OCR 配置类型
* refactor(OCR设置): 重命名OcrImageProviderSettings为OcrImageSettings并优化代码结构
* refactor(ocr): 将 Tesseract 相关类型移动到文件底部以改善代码组织
* feat(ocr): 添加 Tesseract OCR 提供者类型检查函数
* feat(ocr): 添加更新OCR提供者配置的功能
* feat: 添加OCR提供者钩子函数
实现useOcrProvider钩子用于获取和更新OCR提供者配置
* refactor(ocr): 修改removeOcrProvider参数为字符串id
简化removeOcrProvider方法的参数类型,直接使用字符串id进行过滤,提高代码简洁性
* refactor(ocr): 将内置OCR提供者从数组改为映射结构
重构OCR配置模块,使用映射结构存储内置OCR提供者以便于扩展和维护
* refactor(ocr): 将BUILTIN_OCR_PROVIDERS改为只读数组
使用Object.freeze确保数组不可变,提高代码安全性
* feat(ocr): 添加OCR提供者管理功能并改进错误处理
添加useOcrProviders钩子用于管理OCR提供者的添加和删除
当内置OCR提供者不存在时自动恢复默认配置
改进错误提示信息并增加国际化支持
* Revert "refactor(ocr): 将BUILTIN_OCR_PROVIDERS改为只读数组"
This reverts commit f23e37941a.
* feat(ocr): 为Tesseract OCR添加多语言支持配置
添加对简体中文、繁体中文和英文的语言支持配置,扩展OCR功能以满足多语言识别需求
* refactor(types): 将Tesseract.LanguageCode重命名为TesseractLangCode以提高可读性
* feat(OCR设置): 添加OCR提供商设置组件及状态管理
新增OCR提供商设置组件,支持显示当前选择的OCR提供商信息
在OCR图片设置中添加状态管理,同步提供商选择到父组件
添加Tesseract OCR设置组件,支持多语言选择(暂不可用)
* fix(DocProcessSettings): 修复OCR语言选择默认值问题
* feat(i18n): 添加OCR提供商相关错误和警告的翻译
* fix(ocr): 将 Tesseract 语言配置类型改为部分
* fix(ocr): 修复ocrImage函数未使用await导致的问题
* fix(ocr): 修复迁移配置中ocr状态的初始化方式
将分散的属性赋值改为对象整体赋值,避免潜在的属性丢失问题
* chore: 移除不再使用的@types/tesseract.js依赖
* refactor(OCR设置): 添加错误边界处理并移除无用注释
在OCR设置组件中添加ErrorBoundary以处理潜在错误
移除OcrTesseractSettings中的TODO注释
* build: 添加 sharp 依赖以支持图片处理功能
* refactor(ocr): 添加OCR图像预处理功能并优化TesseractService
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* refactor(ocr): 移除独立的灰度处理模块并改进预处理流程
将灰度处理功能直接集成到OCR预处理中,不再需要单独的image模块
添加normalise和threshold处理以提升OCR识别效果
* improve image preprocess
---------
Co-authored-by: beyondkmp <beyondkmp@gmail.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
349 lines
11 KiB
Diff
Vendored
349 lines
11 KiB
Diff
Vendored
diff --git a/src/constants/languages.d.ts b/src/constants/languages.d.ts
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..6a2ba5086187622b8ca8887bcc7406018fba8a89
|
|
--- /dev/null
|
|
+++ b/src/constants/languages.d.ts
|
|
@@ -0,0 +1,43 @@
|
|
+/**
|
|
+ * Languages with existing tesseract traineddata
|
|
+ * https://tesseract-ocr.github.io/tessdoc/Data-Files#data-files-for-version-400-november-29-2016
|
|
+ */
|
|
+
|
|
+// Define the language codes as string literals
|
|
+type LanguageCode =
|
|
+ | 'afr' | 'amh' | 'ara' | 'asm' | 'aze' | 'aze_cyrl' | 'bel' | 'ben' | 'bod' | 'bos'
|
|
+ | 'bul' | 'cat' | 'ceb' | 'ces' | 'chi_sim' | 'chi_tra' | 'chr' | 'cym' | 'dan' | 'deu'
|
|
+ | 'dzo' | 'ell' | 'eng' | 'enm' | 'epo' | 'est' | 'eus' | 'fas' | 'fin' | 'fra'
|
|
+ | 'frk' | 'frm' | 'gle' | 'glg' | 'grc' | 'guj' | 'hat' | 'heb' | 'hin' | 'hrv'
|
|
+ | 'hun' | 'iku' | 'ind' | 'isl' | 'ita' | 'ita_old' | 'jav' | 'jpn' | 'kan' | 'kat'
|
|
+ | 'kat_old' | 'kaz' | 'khm' | 'kir' | 'kor' | 'kur' | 'lao' | 'lat' | 'lav' | 'lit'
|
|
+ | 'mal' | 'mar' | 'mkd' | 'mlt' | 'msa' | 'mya' | 'nep' | 'nld' | 'nor' | 'ori'
|
|
+ | 'pan' | 'pol' | 'por' | 'pus' | 'ron' | 'rus' | 'san' | 'sin' | 'slk' | 'slv'
|
|
+ | 'spa' | 'spa_old' | 'sqi' | 'srp' | 'srp_latn' | 'swa' | 'swe' | 'syr' | 'tam' | 'tel'
|
|
+ | 'tgk' | 'tgl' | 'tha' | 'tir' | 'tur' | 'uig' | 'ukr' | 'urd' | 'uzb' | 'uzb_cyrl'
|
|
+ | 'vie' | 'yid';
|
|
+
|
|
+// Define the language keys as string literals
|
|
+type LanguageKey =
|
|
+ | 'AFR' | 'AMH' | 'ARA' | 'ASM' | 'AZE' | 'AZE_CYRL' | 'BEL' | 'BEN' | 'BOD' | 'BOS'
|
|
+ | 'BUL' | 'CAT' | 'CEB' | 'CES' | 'CHI_SIM' | 'CHI_TRA' | 'CHR' | 'CYM' | 'DAN' | 'DEU'
|
|
+ | 'DZO' | 'ELL' | 'ENG' | 'ENM' | 'EPO' | 'EST' | 'EUS' | 'FAS' | 'FIN' | 'FRA'
|
|
+ | 'FRK' | 'FRM' | 'GLE' | 'GLG' | 'GRC' | 'GUJ' | 'HAT' | 'HEB' | 'HIN' | 'HRV'
|
|
+ | 'HUN' | 'IKU' | 'IND' | 'ISL' | 'ITA' | 'ITA_OLD' | 'JAV' | 'JPN' | 'KAN' | 'KAT'
|
|
+ | 'KAT_OLD' | 'KAZ' | 'KHM' | 'KIR' | 'KOR' | 'KUR' | 'LAO' | 'LAT' | 'LAV' | 'LIT'
|
|
+ | 'MAL' | 'MAR' | 'MKD' | 'MLT' | 'MSA' | 'MYA' | 'NEP' | 'NLD' | 'NOR' | 'ORI'
|
|
+ | 'PAN' | 'POL' | 'POR' | 'PUS' | 'RON' | 'RUS' | 'SAN' | 'SIN' | 'SLK' | 'SLV'
|
|
+ | 'SPA' | 'SPA_OLD' | 'SQI' | 'SRP' | 'SRP_LATN' | 'SWA' | 'SWE' | 'SYR' | 'TAM' | 'TEL'
|
|
+ | 'TGK' | 'TGL' | 'THA' | 'TIR' | 'TUR' | 'UIG' | 'UKR' | 'URD' | 'UZB' | 'UZB_CYRL'
|
|
+ | 'VIE' | 'YID';
|
|
+
|
|
+// Create a mapped type to ensure each key maps to its specific value
|
|
+type LanguagesMap = {
|
|
+ [K in LanguageKey]: LanguageCode;
|
|
+};
|
|
+
|
|
+// Declare the exported constant with the specific type
|
|
+export const LANGUAGES: LanguagesMap;
|
|
+
|
|
+// Export the individual types for use in other modules
|
|
+export type { LanguageCode, LanguageKey, LanguagesMap };
|
|
\ No newline at end of file
|
|
diff --git a/src/index.d.ts b/src/index.d.ts
|
|
index 1f5a9c8094fe4de7983467f9efb43bdb4de535f2..16dc95cf68663673e37e189b719cb74897b7735f 100644
|
|
--- a/src/index.d.ts
|
|
+++ b/src/index.d.ts
|
|
@@ -1,31 +1,74 @@
|
|
+// Import the languages types
|
|
+import { LanguagesMap } from "./constants/languages";
|
|
+
|
|
+/// <reference types="node" />
|
|
+
|
|
declare namespace Tesseract {
|
|
- function createScheduler(): Scheduler
|
|
- function createWorker(langs?: string | string[] | Lang[], oem?: OEM, options?: Partial<WorkerOptions>, config?: string | Partial<InitOptions>): Promise<Worker>
|
|
- function setLogging(logging: boolean): void
|
|
- function recognize(image: ImageLike, langs?: string, options?: Partial<WorkerOptions>): Promise<RecognizeResult>
|
|
- function detect(image: ImageLike, options?: Partial<WorkerOptions>): any
|
|
+ function createScheduler(): Scheduler;
|
|
+ function createWorker(
|
|
+ langs?: LanguageCode | LanguageCode[] | Lang[],
|
|
+ oem?: OEM,
|
|
+ options?: Partial<WorkerOptions>,
|
|
+ config?: string | Partial<InitOptions>
|
|
+ ): Promise<Worker>;
|
|
+ function setLogging(logging: boolean): void;
|
|
+ function recognize(
|
|
+ image: ImageLike,
|
|
+ langs?: LanguageCode,
|
|
+ options?: Partial<WorkerOptions>
|
|
+ ): Promise<RecognizeResult>;
|
|
+ function detect(image: ImageLike, options?: Partial<WorkerOptions>): any;
|
|
+
|
|
+ // Export languages constant
|
|
+ const languages: LanguagesMap;
|
|
+
|
|
+ type LanguageCode = import("./constants/languages").LanguageCode;
|
|
+ type LanguageKey = import("./constants/languages").LanguageKey;
|
|
|
|
interface Scheduler {
|
|
- addWorker(worker: Worker): string
|
|
- addJob(action: 'recognize', ...args: Parameters<Worker['recognize']>): Promise<RecognizeResult>
|
|
- addJob(action: 'detect', ...args: Parameters<Worker['detect']>): Promise<DetectResult>
|
|
- terminate(): Promise<any>
|
|
- getQueueLen(): number
|
|
- getNumWorkers(): number
|
|
+ addWorker(worker: Worker): string;
|
|
+ addJob(
|
|
+ action: "recognize",
|
|
+ ...args: Parameters<Worker["recognize"]>
|
|
+ ): Promise<RecognizeResult>;
|
|
+ addJob(
|
|
+ action: "detect",
|
|
+ ...args: Parameters<Worker["detect"]>
|
|
+ ): Promise<DetectResult>;
|
|
+ terminate(): Promise<any>;
|
|
+ getQueueLen(): number;
|
|
+ getNumWorkers(): number;
|
|
}
|
|
|
|
interface Worker {
|
|
- load(jobId?: string): Promise<ConfigResult>
|
|
- writeText(path: string, text: string, jobId?: string): Promise<ConfigResult>
|
|
- readText(path: string, jobId?: string): Promise<ConfigResult>
|
|
- removeText(path: string, jobId?: string): Promise<ConfigResult>
|
|
- FS(method: string, args: any[], jobId?: string): Promise<ConfigResult>
|
|
- reinitialize(langs?: string | Lang[], oem?: OEM, config?: string | Partial<InitOptions>, jobId?: string): Promise<ConfigResult>
|
|
- setParameters(params: Partial<WorkerParams>, jobId?: string): Promise<ConfigResult>
|
|
- getImage(type: imageType): string
|
|
- recognize(image: ImageLike, options?: Partial<RecognizeOptions>, output?: Partial<OutputFormats>, jobId?: string): Promise<RecognizeResult>
|
|
- detect(image: ImageLike, jobId?: string): Promise<DetectResult>
|
|
- terminate(jobId?: string): Promise<ConfigResult>
|
|
+ load(jobId?: string): Promise<ConfigResult>;
|
|
+ writeText(
|
|
+ path: string,
|
|
+ text: string,
|
|
+ jobId?: string
|
|
+ ): Promise<ConfigResult>;
|
|
+ readText(path: string, jobId?: string): Promise<ConfigResult>;
|
|
+ removeText(path: string, jobId?: string): Promise<ConfigResult>;
|
|
+ FS(method: string, args: any[], jobId?: string): Promise<ConfigResult>;
|
|
+ reinitialize(
|
|
+ langs?: string | Lang[],
|
|
+ oem?: OEM,
|
|
+ config?: string | Partial<InitOptions>,
|
|
+ jobId?: string
|
|
+ ): Promise<ConfigResult>;
|
|
+ setParameters(
|
|
+ params: Partial<WorkerParams>,
|
|
+ jobId?: string
|
|
+ ): Promise<ConfigResult>;
|
|
+ getImage(type: imageType): string;
|
|
+ recognize(
|
|
+ image: ImageLike,
|
|
+ options?: Partial<RecognizeOptions>,
|
|
+ output?: Partial<OutputFormats>,
|
|
+ jobId?: string
|
|
+ ): Promise<RecognizeResult>;
|
|
+ detect(image: ImageLike, jobId?: string): Promise<DetectResult>;
|
|
+ terminate(jobId?: string): Promise<ConfigResult>;
|
|
}
|
|
|
|
interface Lang {
|
|
@@ -34,43 +77,43 @@ declare namespace Tesseract {
|
|
}
|
|
|
|
interface InitOptions {
|
|
- load_system_dawg: string
|
|
- load_freq_dawg: string
|
|
- load_unambig_dawg: string
|
|
- load_punc_dawg: string
|
|
- load_number_dawg: string
|
|
- load_bigram_dawg: string
|
|
- }
|
|
-
|
|
- type LoggerMessage = {
|
|
- jobId: string
|
|
- progress: number
|
|
- status: string
|
|
- userJobId: string
|
|
- workerId: string
|
|
+ load_system_dawg: string;
|
|
+ load_freq_dawg: string;
|
|
+ load_unambig_dawg: string;
|
|
+ load_punc_dawg: string;
|
|
+ load_number_dawg: string;
|
|
+ load_bigram_dawg: string;
|
|
}
|
|
-
|
|
+
|
|
+ type LoggerMessage = {
|
|
+ jobId: string;
|
|
+ progress: number;
|
|
+ status: string;
|
|
+ userJobId: string;
|
|
+ workerId: string;
|
|
+ };
|
|
+
|
|
interface WorkerOptions {
|
|
- corePath: string
|
|
- langPath: string
|
|
- cachePath: string
|
|
- dataPath: string
|
|
- workerPath: string
|
|
- cacheMethod: string
|
|
- workerBlobURL: boolean
|
|
- gzip: boolean
|
|
- legacyLang: boolean
|
|
- legacyCore: boolean
|
|
- logger: (arg: LoggerMessage) => void,
|
|
- errorHandler: (arg: any) => void
|
|
+ corePath: string;
|
|
+ langPath: string;
|
|
+ cachePath: string;
|
|
+ dataPath: string;
|
|
+ workerPath: string;
|
|
+ cacheMethod: string;
|
|
+ workerBlobURL: boolean;
|
|
+ gzip: boolean;
|
|
+ legacyLang: boolean;
|
|
+ legacyCore: boolean;
|
|
+ logger: (arg: LoggerMessage) => void;
|
|
+ errorHandler: (arg: any) => void;
|
|
}
|
|
interface WorkerParams {
|
|
- tessedit_pageseg_mode: PSM
|
|
- tessedit_char_whitelist: string
|
|
- tessedit_char_blacklist: string
|
|
- preserve_interword_spaces: string
|
|
- user_defined_dpi: string
|
|
- [propName: string]: any
|
|
+ tessedit_pageseg_mode: PSM;
|
|
+ tessedit_char_whitelist: string;
|
|
+ tessedit_char_blacklist: string;
|
|
+ preserve_interword_spaces: string;
|
|
+ user_defined_dpi: string;
|
|
+ [propName: string]: any;
|
|
}
|
|
interface OutputFormats {
|
|
text: boolean;
|
|
@@ -88,36 +131,36 @@ declare namespace Tesseract {
|
|
debug: boolean;
|
|
}
|
|
interface RecognizeOptions {
|
|
- rectangle: Rectangle
|
|
- pdfTitle: string
|
|
- pdfTextOnly: boolean
|
|
- rotateAuto: boolean
|
|
- rotateRadians: number
|
|
+ rectangle: Rectangle;
|
|
+ pdfTitle: string;
|
|
+ pdfTextOnly: boolean;
|
|
+ rotateAuto: boolean;
|
|
+ rotateRadians: number;
|
|
}
|
|
interface ConfigResult {
|
|
- jobId: string
|
|
- data: any
|
|
+ jobId: string;
|
|
+ data: any;
|
|
}
|
|
interface RecognizeResult {
|
|
- jobId: string
|
|
- data: Page
|
|
+ jobId: string;
|
|
+ data: Page;
|
|
}
|
|
interface DetectResult {
|
|
- jobId: string
|
|
- data: DetectData
|
|
+ jobId: string;
|
|
+ data: DetectData;
|
|
}
|
|
interface DetectData {
|
|
- tesseract_script_id: number | null
|
|
- script: string | null
|
|
- script_confidence: number | null
|
|
- orientation_degrees: number | null
|
|
- orientation_confidence: number | null
|
|
+ tesseract_script_id: number | null;
|
|
+ script: string | null;
|
|
+ script_confidence: number | null;
|
|
+ orientation_degrees: number | null;
|
|
+ orientation_confidence: number | null;
|
|
}
|
|
interface Rectangle {
|
|
- left: number
|
|
- top: number
|
|
- width: number
|
|
- height: number
|
|
+ left: number;
|
|
+ top: number;
|
|
+ width: number;
|
|
+ height: number;
|
|
}
|
|
enum OEM {
|
|
TESSERACT_ONLY,
|
|
@@ -126,28 +169,36 @@ declare namespace Tesseract {
|
|
DEFAULT,
|
|
}
|
|
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'
|
|
+ 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",
|
|
}
|
|
const enum imageType {
|
|
COLOR = 0,
|
|
GREY = 1,
|
|
- BINARY = 2
|
|
+ BINARY = 2,
|
|
}
|
|
- type ImageLike = string | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement
|
|
- | CanvasRenderingContext2D | File | Blob | Buffer | OffscreenCanvas;
|
|
+ type ImageLike =
|
|
+ | string
|
|
+ | HTMLImageElement
|
|
+ | HTMLCanvasElement
|
|
+ | HTMLVideoElement
|
|
+ | CanvasRenderingContext2D
|
|
+ | File
|
|
+ | Blob
|
|
+ | (typeof Buffer extends undefined ? never : Buffer)
|
|
+ | OffscreenCanvas;
|
|
interface Block {
|
|
paragraphs: Paragraph[];
|
|
text: string;
|
|
@@ -179,7 +230,7 @@ declare namespace Tesseract {
|
|
text: string;
|
|
confidence: number;
|
|
baseline: Baseline;
|
|
- rowAttributes: RowAttributes
|
|
+ rowAttributes: RowAttributes;
|
|
bbox: Bbox;
|
|
}
|
|
interface Paragraph {
|