@areb0s/ocr-common 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,11 @@ export class Detection extends ModelBase {
6
6
  static async create({ models, onnxOptions = {}, ...restOptions }) {
7
7
  const detectionPath = models?.detectionPath || defaultModels?.detectionPath;
8
8
  invariant(detectionPath, 'detectionPath is required');
9
- const model = await InferenceSession.create(detectionPath, onnxOptions);
9
+ const mergedOptions = {
10
+ executionProviders: ['webgpu', 'webgl', 'wasm'],
11
+ ...onnxOptions,
12
+ };
13
+ const model = await InferenceSession.create(detectionPath, mergedOptions);
10
14
  return new Detection({ model, options: restOptions });
11
15
  }
12
16
  async run(input, { onnxOptions = {} } = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"Detection.js","sourceRoot":"","sources":["../../src/models/Detection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Detection.js","sourceRoot":"","sources":["../../src/models/Detection.ts"],"names":[],"mappings":"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"}
@@ -15,19 +15,25 @@ export class ModelBase {
15
15
  return output;
16
16
  }
17
17
  #prepareInput(modelData) {
18
- const input = Float32Array.from(modelData.data);
18
+ // Optimized: avoid copy if already Float32Array
19
+ const input = modelData.data instanceof Float32Array
20
+ ? modelData.data
21
+ : Float32Array.from(modelData.data);
19
22
  return new Tensor('float32', input, [1, 3, modelData.height, modelData.width]);
20
23
  }
21
24
  imageToInput(image, { mean = [0, 0, 0], std = [1, 1, 1] }) {
22
- const R = [];
23
- const G = [];
24
- const B = [];
25
- for (let i = 0; i < image.data.length; i += 4) {
26
- R.push((image.data[i] / 255 - mean[0]) / std[0]);
27
- G.push((image.data[i + 1] / 255 - mean[1]) / std[1]);
28
- B.push((image.data[i + 2] / 255 - mean[2]) / std[2]);
25
+ const pixelCount = image.data.length / 4;
26
+ // Optimized: use Float32Array directly instead of intermediate arrays
27
+ const newData = new Float32Array(pixelCount * 3);
28
+ // BGR order (model expects BGR)
29
+ const bOffset = 0;
30
+ const gOffset = pixelCount;
31
+ const rOffset = pixelCount * 2;
32
+ for (let i = 0, p = 0; i < image.data.length; i += 4, p++) {
33
+ newData[rOffset + p] = (image.data[i] / 255 - mean[0]) / std[0]; // R
34
+ newData[gOffset + p] = (image.data[i + 1] / 255 - mean[1]) / std[1]; // G
35
+ newData[bOffset + p] = (image.data[i + 2] / 255 - mean[2]) / std[2]; // B
29
36
  }
30
- const newData = [...B, ...G, ...R];
31
37
  return {
32
38
  data: newData,
33
39
  width: image.width,
@@ -1 +1 @@
1
- {"version":3,"file":"ModelBase.js","sourceRoot":"","sources":["../../src/models/ModelBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelBase.js","sourceRoot":"","sources":["../../src/models/ModelBase.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,11 @@ export class Recognition extends ModelBase {
8
8
  invariant(recognitionPath, 'recognitionPath is required');
9
9
  const dictionaryPath = models?.dictionaryPath || defaultModels?.dictionaryPath;
10
10
  invariant(dictionaryPath, 'dictionaryPath is required');
11
- const model = await InferenceSession.create(recognitionPath, onnxOptions);
11
+ const mergedOptions = {
12
+ executionProviders: ['webgpu', 'webgl', 'wasm'],
13
+ ...onnxOptions,
14
+ };
15
+ const model = await InferenceSession.create(recognitionPath, mergedOptions);
12
16
  const dictionaryText = await FileUtils.read(dictionaryPath);
13
17
  const dictionary = [...dictionaryText.split('\n'), ' '];
14
18
  return new Recognition({ model, options: restOptions }, dictionary);
@@ -36,14 +40,14 @@ export class Recognition extends ModelBase {
36
40
  });
37
41
  return modelData;
38
42
  }));
39
- const allLines = [];
43
+ // Optimized: run all model inferences in parallel
40
44
  // console.time('Recognition')
41
- for (const modelData of modelDatas) {
42
- // Run model for each line image
43
- const output = await this.runModel({ modelData, onnxOptions });
44
- // use Dictoinary to decode output to text
45
- const lines = await this.decodeText(output);
46
- allLines.unshift(...lines);
45
+ const outputs = await Promise.all(modelDatas.map((modelData) => this.runModel({ modelData, onnxOptions })));
46
+ // Decode all outputs (maintains order)
47
+ const allLines = [];
48
+ for (let i = outputs.length - 1; i >= 0; i--) {
49
+ const lines = this.decodeText(outputs[i]);
50
+ allLines.push(...lines);
47
51
  }
48
52
  // console.timeEnd('Recognition')
49
53
  const result = calculateBox({ lines: allLines, lineImages });
@@ -1 +1 @@
1
- {"version":3,"file":"Recognition.js","sourceRoot":"","sources":["../../src/models/Recognition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Recognition.js","sourceRoot":"","sources":["../../src/models/Recognition.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export type ImageRawData = {
19
19
  */
20
20
  export type BrowserImageInput = string | ImageRawData | ImageBitmap | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement;
21
21
  export type ModelData = {
22
- data: number[] | Uint8Array;
22
+ data: number[] | Uint8Array | Float32Array;
23
23
  width: number;
24
24
  height: number;
25
25
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@areb0s/ocr-common",
3
3
  "description": "Fork of @gutenye/ocr-common with ImageBitmap support. Shared OCR library for Browser/Node based on PaddleOCR and ONNX runtime.",
4
- "version": "1.0.0",
4
+ "version": "1.0.1",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -21,7 +21,12 @@
21
21
  "default": "./build/backend/splitIntoLineImages.js"
22
22
  }
23
23
  },
24
- "files": ["src", "build", "tsconfig.json", "!**/__tests__"],
24
+ "files": [
25
+ "src",
26
+ "build",
27
+ "tsconfig.json",
28
+ "!**/__tests__"
29
+ ],
25
30
  "scripts": {
26
31
  "build": "npx tsc --project tsconfig.build.json && npx tsc-alias --project tsconfig.build.json",
27
32
  "prepublishOnly": "npm run build"
@@ -10,7 +10,11 @@ export class Detection extends ModelBase {
10
10
  static async create({ models, onnxOptions = {}, ...restOptions }: ModelCreateOptions) {
11
11
  const detectionPath = models?.detectionPath || defaultModels?.detectionPath
12
12
  invariant(detectionPath, 'detectionPath is required')
13
- const model = await InferenceSession.create(detectionPath, onnxOptions)
13
+ const mergedOptions = {
14
+ executionProviders: ['webgpu', 'webgl', 'wasm'],
15
+ ...onnxOptions,
16
+ }
17
+ const model = await InferenceSession.create(detectionPath, mergedOptions)
14
18
  return new Detection({ model, options: restOptions })
15
19
  }
16
20
 
@@ -34,20 +34,29 @@ export class ModelBase {
34
34
  }
35
35
 
36
36
  #prepareInput(modelData: ModelData) {
37
- const input = Float32Array.from(modelData.data)
37
+ // Optimized: avoid copy if already Float32Array
38
+ const input = modelData.data instanceof Float32Array
39
+ ? modelData.data
40
+ : Float32Array.from(modelData.data)
38
41
  return new Tensor('float32', input, [1, 3, modelData.height, modelData.width])
39
42
  }
40
43
 
41
44
  imageToInput(image: ImageRaw, { mean = [0, 0, 0], std = [1, 1, 1] }: ReshapeOptions): ModelData {
42
- const R: number[] = []
43
- const G: number[] = []
44
- const B: number[] = []
45
- for (let i = 0; i < image.data.length; i += 4) {
46
- R.push((image.data[i] / 255 - mean[0]) / std[0])
47
- G.push((image.data[i + 1] / 255 - mean[1]) / std[1])
48
- B.push((image.data[i + 2] / 255 - mean[2]) / std[2])
45
+ const pixelCount = image.data.length / 4
46
+ // Optimized: use Float32Array directly instead of intermediate arrays
47
+ const newData = new Float32Array(pixelCount * 3)
48
+
49
+ // BGR order (model expects BGR)
50
+ const bOffset = 0
51
+ const gOffset = pixelCount
52
+ const rOffset = pixelCount * 2
53
+
54
+ for (let i = 0, p = 0; i < image.data.length; i += 4, p++) {
55
+ newData[rOffset + p] = (image.data[i] / 255 - mean[0]) / std[0] // R
56
+ newData[gOffset + p] = (image.data[i + 1] / 255 - mean[1]) / std[1] // G
57
+ newData[bOffset + p] = (image.data[i + 2] / 255 - mean[2]) / std[2] // B
49
58
  }
50
- const newData = [...B, ...G, ...R]
59
+
51
60
  return {
52
61
  data: newData,
53
62
  width: image.width,
@@ -12,7 +12,11 @@ export class Recognition extends ModelBase {
12
12
  invariant(recognitionPath, 'recognitionPath is required')
13
13
  const dictionaryPath = models?.dictionaryPath || defaultModels?.dictionaryPath
14
14
  invariant(dictionaryPath, 'dictionaryPath is required')
15
- const model = await InferenceSession.create(recognitionPath, onnxOptions)
15
+ const mergedOptions = {
16
+ executionProviders: ['webgpu', 'webgl', 'wasm'],
17
+ ...onnxOptions,
18
+ }
19
+ const model = await InferenceSession.create(recognitionPath, mergedOptions)
16
20
  const dictionaryText = await FileUtils.read(dictionaryPath)
17
21
  const dictionary = [...dictionaryText.split('\n'), ' ']
18
22
  return new Recognition({ model, options: restOptions }, dictionary)
@@ -45,14 +49,17 @@ export class Recognition extends ModelBase {
45
49
  }),
46
50
  )
47
51
 
48
- const allLines: Line[] = []
52
+ // Optimized: run all model inferences in parallel
49
53
  // console.time('Recognition')
50
- for (const modelData of modelDatas) {
51
- // Run model for each line image
52
- const output = await this.runModel({ modelData, onnxOptions })
53
- // use Dictoinary to decode output to text
54
- const lines = await this.decodeText(output)
55
- allLines.unshift(...lines)
54
+ const outputs = await Promise.all(
55
+ modelDatas.map((modelData) => this.runModel({ modelData, onnxOptions }))
56
+ )
57
+
58
+ // Decode all outputs (maintains order)
59
+ const allLines: Line[] = []
60
+ for (let i = outputs.length - 1; i >= 0; i--) {
61
+ const lines = this.decodeText(outputs[i])
62
+ allLines.push(...lines)
56
63
  }
57
64
  // console.timeEnd('Recognition')
58
65
  const result = calculateBox({ lines: allLines, lineImages })
@@ -31,7 +31,7 @@ export type BrowserImageInput =
31
31
  | HTMLVideoElement // <video> element (captures current frame)
32
32
 
33
33
  export type ModelData = {
34
- data: number[] | Uint8Array
34
+ data: number[] | Uint8Array | Float32Array
35
35
  width: number
36
36
  height: number
37
37
  }