@regolithco/ocr 1.0.1 → 1.0.3

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.
package/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # @regolithco/ocr
2
+
3
+ OCR utilities using PaddleOCR, designed for RegolithCo applications. This library provides OCR capabilities for parsing specific game assets like Mining Orders and Rocks, with support for Browser environments.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ yarn add @regolithco/ocr
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ This library exports specific parsers for game entities.
14
+
15
+ ### Parsing Shipping Orders
16
+
17
+ ```typescript
18
+ import { parseShipMiningOrder } from '@regolithco/ocr'
19
+
20
+ // In Node.js environment
21
+ const result = await parseShipMiningOrder('path/to/image.png')
22
+ console.log(result)
23
+ ```
24
+
25
+ ### Parsing Rocks
26
+
27
+ ```typescript
28
+ import { parseShipRock } from '@regolithco/ocr'
29
+
30
+ const result = await parseShipRock('path/to/image.png')
31
+ console.log(result)
32
+ ```
33
+
34
+ ## Development
35
+
36
+ Clone the repository and install dependencies:
37
+
38
+ ```bash
39
+ yarn install
40
+ ```
41
+
42
+ ### Scripts
43
+
44
+ - `yarn build`: Compile TypeScript to `dist/`.
45
+ - `yarn test`: Run unit tests using Jest.
46
+ - `yarn debug`: Run the PaddleOCR debug script on test images.
47
+ - `yarn debug:choose`: Run the debug script with an interactive file chooser.
48
+
49
+ ## License
50
+
51
+ ISC
package/dist/node.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import Ocr from '@gutenye/ocr-node';
1
+ import type Ocr from '@gutenye/ocr-node';
2
2
  import { ShipRockCapture, ShipMiningOrderCapture } from '@regolithco/common/dist/gen/schema.types.js';
3
3
  export declare const initPaddle: () => Promise<Ocr | null>;
4
4
  export declare const recognizeText: (imagePath: string) => Promise<string>;
package/dist/node.js CHANGED
@@ -1,18 +1,60 @@
1
- import Ocr from '@gutenye/ocr-node';
2
1
  import { parseShipMiningOrder as parseShipMiningOrderText } from './parsers/shipMiningOrder.js';
3
2
  import { parseShipRock as parseShipRockText } from './parsers/shipRock.js';
4
3
  let ocrInstance = null;
4
+ let ocrConstructorPromise = null;
5
+ const loadNodeOcr = async () => {
6
+ if (!ocrConstructorPromise) {
7
+ ocrConstructorPromise = import('@gutenye/ocr-node')
8
+ .then((module) => module.default)
9
+ .catch((error) => {
10
+ ocrConstructorPromise = null;
11
+ const instructions = 'The Node OCR helpers require @gutenye/ocr-node. Install it locally (e.g. "yarn add -D @gutenye/ocr-node") to run the terminal utilities.';
12
+ if (error instanceof Error) {
13
+ error.message = `${instructions}\n${error.message}`;
14
+ throw error;
15
+ }
16
+ throw new Error(instructions);
17
+ });
18
+ }
19
+ return ocrConstructorPromise;
20
+ };
5
21
  export const initPaddle = async () => {
6
22
  if (!ocrInstance) {
7
- ocrInstance = await Ocr.create();
23
+ const OcrCtor = await loadNodeOcr();
24
+ ocrInstance = await OcrCtor.create();
8
25
  }
9
26
  return ocrInstance;
10
27
  };
11
28
  export const recognizeText = async (imagePath) => {
12
29
  const ocr = await initPaddle();
13
30
  const results = await ocr.detect(imagePath);
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- const fullText = results.map((line) => line.text).join('\n');
31
+ // Heuristic: Split lines that have massive horizontal gaps, as they likely span multiple UI panels
32
+ const processedLines = [];
33
+ for (const result of results) {
34
+ const text = result.text;
35
+ const box = result.box; // [[x,y], [x,y], [x,y], [x,y]]
36
+ const width = Math.abs(box[1][0] - box[0][0]);
37
+ const height = Math.abs(box[2][1] - box[1][1]);
38
+ // If the box is extremely wide relative to its height and has few characters, it might be a joined line
39
+ // Or more reliably, if we had character-level boxes we could check gaps.
40
+ // Paddle node might not give char boxes easily.
41
+ // But we can check if the line contains a lot of spaces and is very wide.
42
+ // Fallback: If text contains multiple spaces and is wide, it might belong to different columns.
43
+ // However, without char boxes, splitting is risky.
44
+ const charWidth = width / text.length;
45
+ if (charWidth > height * 2 && text.includes(' ')) {
46
+ // High likelihood of a gap. Split by double spaces.
47
+ const parts = text.split(/\s{2,}/);
48
+ processedLines.push(...parts);
49
+ }
50
+ else {
51
+ processedLines.push(text);
52
+ }
53
+ }
54
+ const fullText = processedLines.join('\n');
55
+ console.log('--- PADDLE OCR RAW RESULTS ---');
56
+ console.log(JSON.stringify(results, null, 2));
57
+ console.log('------------------------------');
16
58
  console.log('--- PADDLE OCR OUTPUT ---');
17
59
  console.log(fullText);
18
60
  console.log('-------------------------');
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAA;AAEnC,OAAO,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAC/F,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE1E,IAAI,WAAW,GAAe,IAAI,CAAA;AAElC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;IACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAA;IAClC,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAmB,EAAE;IACxE,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,MAAM,GAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC5C,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEjE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACrB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IAExC,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,SAAiB,EAAmC,EAAE;IAC/F,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,SAAiB,EAA4B,EAAE;IACjF,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;AAChC,CAAC,CAAA"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,13 @@
1
1
  import { RefineryEnum, RefineryMethodEnum, ShipOreEnum, } from '@regolithco/common';
2
2
  import { cleanLine, findBestMatch } from './utils.js';
3
+ // Managed word arrays for OCR variations
4
+ const PROCESS_TIME_KEYWORDS = ['PROCESS TIME', 'TIME'];
5
+ const EXPENSE_LABELS = {
6
+ 'TOTAL COST': 'Refinery Fee',
7
+ 'REFINERY FEE': 'Refinery Fee',
8
+ 'SERVICE FEE': 'Service Fee',
9
+ };
10
+ const EXIT_SECTION_KEYWORDS = ['TOTAL COST', 'USER DETAILS', 'PROCESSING TIME', 'SELECT STORAGE OPTION'];
3
11
  export const parseShipMiningOrder = (ocrText) => {
4
12
  const lines = ocrText
5
13
  .split('\n')
@@ -76,72 +84,103 @@ export const parseShipMiningOrder = (ocrText) => {
76
84
  }
77
85
  // 2. Method
78
86
  if (!method) {
79
- const bestMethod = findBestMatch(lineUpper, allMethods, 3);
80
- if (bestMethod) {
81
- method = bestMethod;
82
- }
83
- else {
84
- for (const m of allMethods) {
85
- const humanM = m.replace(/_/g, ' ');
86
- if (lineUpper.includes(humanM) || lineUpper.includes(m)) {
87
- method = m;
88
- break;
87
+ // Find all matches in the line and pick the left-most one
88
+ // We gather candidates: { method, index }
89
+ let bestMethodIdx = Infinity;
90
+ let bestMethod;
91
+ for (const m of allMethods) {
92
+ const humanM = m.replace(/_/g, ' ');
93
+ // 1. Exact Scan
94
+ // Check 1: match ENUM string directly
95
+ let idx = lineUpper.indexOf(m.toString().toUpperCase());
96
+ // Check 2: match space separated
97
+ const idxHuman = lineUpper.indexOf(humanM.toUpperCase());
98
+ if (idxHuman !== -1) {
99
+ if (idx === -1 || idxHuman < idx) {
100
+ idx = idxHuman;
89
101
  }
90
- if (lineUpper.length >= humanM.length) {
91
- for (let i = 0; i <= lineUpper.length - humanM.length; i++) {
92
- const substr = lineUpper.substring(i, i + humanM.length);
102
+ }
103
+ // 2. Fuzzy Scan (if exact not found, OR to be safe? usually exact is better but let's assume if exact exists it's correct)
104
+ // If we found an exact match, we trust that index.
105
+ // If NOT, we try fuzzy.
106
+ if (idx === -1) {
107
+ const target = humanM.toUpperCase();
108
+ if (lineUpper.length >= target.length) {
109
+ // Sliding window
110
+ for (let i = 0; i <= lineUpper.length - target.length; i++) {
111
+ const substr = lineUpper.substring(i, i + target.length);
93
112
  const dist = findBestMatch(substr, [m], 3);
94
- if (dist) {
95
- method = m;
113
+ // Optimization: If we already have a bestMethod at index 10, and we are at i=20, we can stop scanning this method?
114
+ // Yes, because any match here would be "to the right" of the current best.
115
+ if (i > bestMethodIdx)
96
116
  break;
117
+ if (dist) {
118
+ idx = i;
119
+ break; // Found the left-most fuzzy match for THIS method
97
120
  }
98
121
  }
99
122
  }
100
- if (method)
101
- break;
123
+ }
124
+ if (idx !== -1) {
125
+ if (idx < bestMethodIdx) {
126
+ bestMethodIdx = idx;
127
+ bestMethod = m;
128
+ }
102
129
  }
103
130
  }
131
+ if (bestMethod) {
132
+ method = bestMethod;
133
+ }
104
134
  }
105
135
  // 3. Process Time
106
- if (!processDurationS && (lineUpper.includes('PROCESS TIME') || lineUpper.includes('TIME'))) {
107
- let d = 0;
108
- let h = 0;
109
- let m = 0;
110
- let found = false;
111
- const dMatch = lineUpper.match(/(\d+)\s*D/);
112
- if (dMatch) {
113
- d = parseInt(dMatch[1], 10);
114
- found = true;
115
- }
116
- const hMatch = lineUpper.match(/(\d+)\s*H/);
117
- if (hMatch) {
118
- h = parseInt(hMatch[1], 10);
119
- found = true;
120
- }
121
- const mMatch = lineUpper.match(/(\d+)\s*M/);
122
- if (mMatch) {
123
- m = parseInt(mMatch[1], 10);
124
- found = true;
136
+ if (!processDurationS && PROCESS_TIME_KEYWORDS.some((k) => lineUpper.includes(k))) {
137
+ const parseDuration = (str) => {
138
+ let d = 0;
139
+ let h = 0;
140
+ let m = 0;
141
+ let found = false;
142
+ const dMatch = str.match(/(\d+)\s*D/i);
143
+ if (dMatch) {
144
+ d = parseInt(dMatch[1], 10);
145
+ found = true;
146
+ }
147
+ const hMatch = str.match(/(\d+)\s*H/i);
148
+ if (hMatch) {
149
+ h = parseInt(hMatch[1], 10);
150
+ found = true;
151
+ }
152
+ const mMatch = str.match(/(\d+)\s*M/i);
153
+ if (mMatch) {
154
+ m = parseInt(mMatch[1], 10);
155
+ found = true;
156
+ }
157
+ return found ? d * 86400 + h * 3600 + m * 60 : null;
158
+ };
159
+ const val = parseDuration(lineUpper);
160
+ if (val !== null) {
161
+ processDurationS = val;
125
162
  }
126
- if (found) {
127
- processDurationS = d * 86400 + h * 3600 + m * 60;
163
+ else if (idx + 1 < lines.length) {
164
+ // Try next line
165
+ const nextVal = parseDuration(lines[idx + 1].toUpperCase());
166
+ if (nextVal !== null) {
167
+ processDurationS = nextVal;
168
+ }
128
169
  }
129
170
  }
130
171
  // 3.5. Expenses
131
- const feeMappings = {
132
- 'TOTAL COST': 'Refinery Fee',
133
- 'REFINERY FEE': 'Refinery Fee',
134
- 'SERVICE FEE': 'Service Fee',
135
- };
136
- const fees = Object.keys(feeMappings);
137
- for (const key of fees) {
138
- if (lineUpper.includes(key)) {
139
- const matches = lineUpper.match(/(\d[\d,.]*)/g);
140
- if (matches) {
141
- const rawAmount = matches[matches.length - 1].replace(/,/g, '');
172
+ for (const [label, mappedName] of Object.entries(EXPENSE_LABELS)) {
173
+ const idx = lineUpper.indexOf(label);
174
+ if (idx !== -1) {
175
+ // Found the label. We want the number that follows it.
176
+ const relevantText = lineUpper.substring(idx + label.length);
177
+ // Find the FIRST number in this substring
178
+ const match = relevantText.match(/(\d[\d,.]*)/);
179
+ if (match) {
180
+ const rawAmount = match[1].replace(/,/g, '');
142
181
  const amount = parseInt(rawAmount);
143
182
  if (!isNaN(amount)) {
144
- const mappedName = feeMappings[key];
183
+ // Only add if not already present
145
184
  if (!expenses.find((e) => e.name === mappedName)) {
146
185
  expenses.push({
147
186
  __typename: 'WorkOrderExpense',
@@ -157,19 +196,18 @@ export const parseShipMiningOrder = (ocrText) => {
157
196
  // 4. Ores Section Management
158
197
  let exitingSection = false;
159
198
  if (!inMaterialsSection) {
160
- if (lineUpper.includes('MATERIALS SELECTED') ||
161
- (lineUpper.includes('YIELD') && lineUpper.includes('REFINE') && !lineUpper.includes('TO REFINE')) ||
162
- (lineUpper.includes('OTY') && lineUpper.includes('YIELD'))) {
199
+ const hasMaterialsSelected = lineUpper.includes('MATERIALS SELECTED');
200
+ const hasYield = lineUpper.includes('YIELD');
201
+ const hasRefine = lineUpper.includes('REFINE') && !lineUpper.includes('TO REFINE');
202
+ const hasQty = lineUpper.includes('OTY');
203
+ if (hasMaterialsSelected || (hasYield && (hasRefine || hasQty))) {
163
204
  inMaterialsSection = true;
164
205
  continue;
165
206
  }
166
207
  }
167
208
  else {
168
- // Check for exit conditions but allow processing of current line
169
- if (lineUpper.includes('TOTAL COST') ||
170
- lineUpper.includes('USER DETAILS') ||
171
- lineUpper.includes('PROCESSING TIME') ||
172
- lineUpper.includes('Select Storage Option'.toUpperCase())) {
209
+ // Check for exit conditions
210
+ if (EXIT_SECTION_KEYWORDS.some((k) => lineUpper.includes(k))) {
173
211
  exitingSection = true;
174
212
  }
175
213
  }
@@ -233,6 +271,13 @@ export const parseShipMiningOrder = (ocrText) => {
233
271
  }
234
272
  }
235
273
  if (numbers.length >= 2) {
274
+ // Heuristic to filter "phantom" rows (often 3 numbers, last one small)
275
+ // e.g. "AGRICIUM 391 381 10" vs Valid "TIN 830 706"
276
+ // usage of // usually implies a comment or structural noise we should ignore for filtering decision
277
+ if (numbers.length === 3 && numbers[2] <= 20 && !lineUpper.includes('//')) {
278
+ // Likely an artifact row, skip it
279
+ continue;
280
+ }
236
281
  const yieldVal = numbers[1];
237
282
  shipOres.push({
238
283
  __typename: 'RefineryRowCapture',
@@ -248,7 +293,7 @@ export const parseShipMiningOrder = (ocrText) => {
248
293
  }
249
294
  return {
250
295
  __typename: 'ShipMiningOrderCapture',
251
- refinery,
296
+ refinery: refinery !== null && refinery !== void 0 ? refinery : null,
252
297
  method,
253
298
  processDurationS,
254
299
  expenses: expenses.length > 0 ? expenses : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"shipMiningOrder.js","sourceRoot":"","sources":["../../src/parsers/shipMiningOrder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shipMiningOrder.js","sourceRoot":"","sources":["../../src/parsers/shipMiningOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,WAAW,GAIZ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAErD,yCAAyC;AACzC,MAAM,qBAAqB,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACtD,MAAM,cAAc,GAAG;IACrB,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,aAAa;CAC7B,CAAA;AACD,MAAM,qBAAqB,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,uBAAuB,CAAC,CAAA;AAExG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAA0B,EAAE;IAC9E,MAAM,KAAK,GAAG,OAAO;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,SAAS,CAAC;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAE9B,IAAI,QAAkC,CAAA;IACtC,IAAI,MAAsC,CAAA;IAC1C,IAAI,gBAAoC,CAAA;IACxC,MAAM,QAAQ,GAAyB,EAAE,CAAA;IACzC,MAAM,QAAQ,GAAuB,EAAE,CAAA;IAEvC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAE1C,iDAAiD;IACjD,6EAA6E;IAC7E,MAAM,qBAAqB,GAAiC,EAAE,CAAA;IAE9D,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;QAE9B,2EAA2E;QAC3E,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAA;QAElD,2EAA2E;QAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,iBAAiB;gBACjB,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAA;YACjD,CAAC;YACD,4EAA4E;YAC5E,6DAA6D;QAC/D,CAAC;QAED,sDAAsD;QACtD,wEAAwE;QACxE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,mCAAmC;YACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACxC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,qBAAqB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAA;YACrD,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAClF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,qBAAqB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAA;QACvD,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,kBAAkB,GAAG,KAAK,CAAA;IAE9B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEpC,cAAc;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,wDAAwD;YACxD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC/D,2FAA2F;gBAC3F,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;oBAC3E,QAAQ,GAAG,GAAG,CAAA;oBACd,MAAK;gBACP,CAAC;YACH,CAAC;YAED,mDAAmD;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBAC3G,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;wBAChC,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;wBAC5F,IAAI,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;4BACrF,QAAQ,GAAG,GAAG,CAAA;4BACd,MAAK;wBACP,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,YAAY;QACZ,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,0DAA0D;YAC1D,0CAA0C;YAC1C,IAAI,aAAa,GAAG,QAAQ,CAAA;YAC5B,IAAI,UAA0C,CAAA;YAE9C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACnC,gBAAgB;gBAChB,sCAAsC;gBACtC,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;gBAEvD,iCAAiC;gBACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;gBACxD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;oBACpB,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;wBACjC,GAAG,GAAG,QAAQ,CAAA;oBAChB,CAAC;gBACH,CAAC;gBAED,2HAA2H;gBAC3H,mDAAmD;gBACnD,wBAAwB;gBACxB,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;oBACnC,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBACtC,iBAAiB;wBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;4BACxD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;4BAE1C,mHAAmH;4BACnH,2EAA2E;4BAC3E,IAAI,CAAC,GAAG,aAAa;gCAAE,MAAK;4BAE5B,IAAI,IAAI,EAAE,CAAC;gCACT,GAAG,GAAG,CAAC,CAAA;gCACP,MAAK,CAAC,kDAAkD;4BAC1D,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;oBACf,IAAI,GAAG,GAAG,aAAa,EAAE,CAAC;wBACxB,aAAa,GAAG,GAAG,CAAA;wBACnB,UAAU,GAAG,CAAC,CAAA;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,UAAU,CAAA;YACrB,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;gBACpC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACT,IAAI,CAAC,GAAG,CAAC,CAAA;gBACT,IAAI,CAAC,GAAG,CAAC,CAAA;gBACT,IAAI,KAAK,GAAG,KAAK,CAAA;gBACjB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBACtC,IAAI,MAAM,EAAE,CAAC;oBACX,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC3B,KAAK,GAAG,IAAI,CAAA;gBACd,CAAC;gBACD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBACtC,IAAI,MAAM,EAAE,CAAC;oBACX,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC3B,KAAK,GAAG,IAAI,CAAA;gBACd,CAAC;gBACD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBACtC,IAAI,MAAM,EAAE,CAAC;oBACX,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC3B,KAAK,GAAG,IAAI,CAAA;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;YACrD,CAAC,CAAA;YAED,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;YACpC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,gBAAgB,GAAG,GAAG,CAAA;YACxB,CAAC;iBAAM,IAAI,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClC,gBAAgB;gBAChB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;gBAC3D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,gBAAgB,GAAG,OAAO,CAAA;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACjE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,uDAAuD;gBACvD,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;gBAE5D,0CAA0C;gBAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;gBAC/C,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;oBAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;oBAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;wBACnB,kCAAkC;wBAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;4BACjD,QAAQ,CAAC,IAAI,CAAC;gCACZ,UAAU,EAAE,kBAAkB;gCAC9B,IAAI,EAAE,UAAU;gCAChB,MAAM;gCACN,WAAW,EAAE,SAAS;6BACvB,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,cAAc,GAAG,KAAK,CAAA;QAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;YACrE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;YAClF,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAExC,IAAI,oBAAoB,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC;gBAChE,kBAAkB,GAAG,IAAI,CAAA;gBACzB,SAAQ;YACV,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,cAAc,GAAG,IAAI,CAAA;YACvB,CAAC;QACH,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,SAAS,GAAuB,IAAI,CAAA;YACxC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAA;YAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;gBAC5D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;oBAAE,SAAQ;gBAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;gBAC/C,IAAI,KAAK,EAAE,CAAC;oBACV,SAAS,GAAG,KAAK,CAAA;oBACjB,QAAQ,GAAG,CAAC,CAAA;oBACZ,MAAK;gBACP,CAAC;YACH,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,OAAO,GAAa,EAAE,CAAA;gBAC1B,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACjD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,SAAQ;oBACpC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;oBAC5C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;wBAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;4BAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACpC,CAAC;gBACH,CAAC;gBAED,2DAA2D;gBAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;oBAC7C,iFAAiF;oBACjF,iEAAiE;oBACjE,IAAI,cAAc,GAAG,KAAK,CAAA;oBAC1B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;oBACvC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;wBAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;wBAChD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;4BAClD,cAAc,GAAG,IAAI,CAAA;4BACrB,MAAK;wBACP,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,4CAA4C;wBAC5C,MAAM,WAAW,GAAa,EAAE,CAAA;wBAChC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;4BAC1B,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;gCAAE,SAAQ;4BAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;4BACrC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACnB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;gCAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oCAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;4BACxC,CAAC;wBACH,CAAC;wBACD,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;4BAC5B,OAAO,GAAG,WAAW,CAAA;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACxB,uEAAuE;oBACvE,oDAAoD;oBACpD,oGAAoG;oBACpG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1E,kCAAkC;wBAClC,SAAQ;oBACV,CAAC;oBAED,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;oBAC3B,QAAQ,CAAC,IAAI,CAAC;wBACZ,UAAU,EAAE,oBAAoB;wBAChC,GAAG,EAAE,SAAS;wBACd,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;qBAC5B,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,kBAAkB,GAAG,KAAK,CAAA;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU,EAAE,wBAAwB;QACpC,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI;QAC1B,MAAM;QACN,gBAAgB;QAChB,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACpD,QAAQ;KACT,CAAA;AACH,CAAC,CAAA"}
@@ -1,53 +1,88 @@
1
1
  import { ShipOreEnum, AsteroidTypeEnum, DepositTypeEnum, } from '@regolithco/common';
2
2
  import { cleanLine, levenshtein } from './utils.js';
3
+ // Managed word arrays for OCR variations
4
+ const SCAN_RESULTS_KEYWORDS = ['SCAN RESULTS'];
5
+ const MASS_KEYWORDS = ['MASS', 'NASS'];
6
+ const RESISTANCE_KEYWORDS = ['RESIST', 'RESISTANCE', 'RESISTANC', 'SISTAN'];
7
+ const INSTABILITY_KEYWORDS = ['INSTAB', 'INSTABILITY', 'INSTABILIT', 'ABIT', 'STAB'];
8
+ const COMPOSITION_KEYWORDS = ['COMPOSITION', 'COMP0SITI0N'];
9
+ const INERT_KEYWORDS = ['INERT', 'MATERIAL', 'MATERIALS'];
10
+ const ASTEROID_TYPE_MAP = {
11
+ [AsteroidTypeEnum.Mtype]: ['M-TYPE'],
12
+ [AsteroidTypeEnum.Ctype]: ['C-TYPE'],
13
+ [AsteroidTypeEnum.Stype]: ['S-TYPE'],
14
+ [AsteroidTypeEnum.Etype]: ['E-TYPE', 'E TYPE'],
15
+ [AsteroidTypeEnum.Itype]: ['I-TYPE'],
16
+ [AsteroidTypeEnum.Ptype]: ['P-TYPE'],
17
+ [AsteroidTypeEnum.Qtype]: ['Q-TYPE'],
18
+ };
3
19
  export const parseShipRock = (ocrText) => {
4
20
  // Split into lines to preserve spatial context
5
21
  const lines = ocrText
6
22
  .split('\n')
7
23
  .map(cleanLine)
8
24
  .filter((l) => l.length > 0);
25
+ // Validation: Check for required anchors to ensure this is a valid Rock Info panel
26
+ const linesUpper = lines.map((l) => l.toUpperCase());
27
+ const hasScan = linesUpper.some((l) => SCAN_RESULTS_KEYWORDS.some((k) => l.includes(k)));
28
+ const hasMass = linesUpper.some((l) => MASS_KEYWORDS.some((k) => l.includes(k)));
29
+ const hasRes = linesUpper.some((l) => RESISTANCE_KEYWORDS.some((k) => l.includes(k)));
30
+ const hasInst = linesUpper.some((l) => INSTABILITY_KEYWORDS.some((k) => l.includes(k)));
31
+ const hasComp = linesUpper.some((l) => COMPOSITION_KEYWORDS.some((k) => l.includes(k)));
32
+ // Require at least 3 anchors to be considered a valid rock scan
33
+ const anchors = [hasScan, hasMass, hasRes, hasInst, hasComp];
34
+ const anchorCount = anchors.filter(Boolean).length;
35
+ if (anchorCount < 3) {
36
+ return {
37
+ __typename: 'ShipRockCapture',
38
+ mass: 0,
39
+ ores: [],
40
+ };
41
+ }
9
42
  // Default values
10
43
  let mass = 0;
11
44
  let inst;
12
45
  let res;
13
46
  let rockType;
14
47
  const ores = [];
48
+ const allNumbers = [];
15
49
  const allOres = Object.values(ShipOreEnum);
16
- const asteroidMap = {
17
- 'M-TYPE': AsteroidTypeEnum.Mtype,
18
- 'C-TYPE': AsteroidTypeEnum.Ctype,
19
- 'S-TYPE': AsteroidTypeEnum.Stype,
20
- 'E-TYPE': AsteroidTypeEnum.Etype,
21
- 'E TYPE': AsteroidTypeEnum.Etype,
22
- 'I-TYPE': AsteroidTypeEnum.Itype,
23
- 'P-TYPE': AsteroidTypeEnum.Ptype,
24
- 'Q-TYPE': AsteroidTypeEnum.Qtype,
25
- };
26
50
  // Iterate lines to find tokens
27
51
  for (const line of lines) {
28
52
  const lineUpper = line.toUpperCase();
53
+ // Collect all plausible numbers for fallback
54
+ const numberRegex = /([\d,]+(?:\.[\d,]+)?)/g;
55
+ let match;
56
+ while ((match = numberRegex.exec(line)) !== null) {
57
+ const val = parseFloat(match[1].replace(/,/g, ''));
58
+ if (!isNaN(val))
59
+ allNumbers.push(val);
60
+ }
29
61
  // 1. Mass
30
62
  if (!mass) {
31
- // Strict Mass: "MASS: 1234"
32
- const massMatch = line.match(/Mass\s*[:=\s]\s*([\d,]+(?:\.\d+)?)/i);
63
+ // Flexible Mass: "MASS: 1234" or "NASS: 1234"
64
+ const massRegex = new RegExp(`(?:${MASS_KEYWORDS.join('|')})\\s*[:=\\s]\\s*([\\d,]+(?:\\.\\d+)?)`, 'i');
65
+ const massMatch = line.match(massRegex);
33
66
  if (massMatch) {
34
- const val = parseFloat(massMatch[1].replace(/,/g, ''));
67
+ const rawVal = massMatch[1].replace(/,/g, '');
68
+ const val = parseFloat(rawVal);
35
69
  if (!isNaN(val))
36
70
  mass = val;
37
71
  }
38
72
  }
39
73
  // 2. Instability
40
74
  if (inst === undefined) {
41
- const match = line.match(/(?:Inst|ABIT|STAB)[^\d]*([\d.]+)/i);
75
+ const instRegex = new RegExp(`(?:${INSTABILITY_KEYWORDS.join('|')})[^\\d]*([\\d,.]+)`, 'i');
76
+ const match = line.match(instRegex);
42
77
  if (match)
43
- inst = parseFloat(match[1]);
78
+ inst = parseFloat(match[1].replace(/,/g, ''));
44
79
  }
45
80
  // 3. Resistance
46
81
  if (res === undefined) {
47
- // RESISTANCE: 10%
48
- const match = line.match(/(?:Res|SISTAN|RESIST)[^\d]*([\d.]+)/i);
82
+ const resRegex = new RegExp(`(?:${RESISTANCE_KEYWORDS.join('|')})[^\\d]*([\\d,.]+)`, 'i');
83
+ const match = line.match(resRegex);
49
84
  if (match) {
50
- let val = parseFloat(match[1]);
85
+ let val = parseFloat(match[1].replace(/,/g, ''));
51
86
  if (line.includes('%') && val > 1)
52
87
  val /= 100;
53
88
  res = val;
@@ -55,14 +90,17 @@ export const parseShipRock = (ocrText) => {
55
90
  }
56
91
  // 4. Rock Type
57
92
  if (!rockType) {
58
- for (const [key, value] of Object.entries(asteroidMap)) {
59
- // Flexible match
60
- const cleanKey = key.replace(/[- ]/g, '[\\- _\\.]?');
61
- const regex = new RegExp(cleanKey, 'i');
62
- if (regex.test(line)) {
63
- rockType = value;
64
- break;
93
+ for (const [type, aliases] of Object.entries(ASTEROID_TYPE_MAP)) {
94
+ for (const alias of aliases) {
95
+ const cleanKey = alias.replace(/[- ]/g, '[\\- _\\.]?');
96
+ const regex = new RegExp(cleanKey, 'i');
97
+ if (regex.test(line)) {
98
+ rockType = type;
99
+ break;
100
+ }
65
101
  }
102
+ if (rockType)
103
+ break;
66
104
  }
67
105
  // Deposit types if not asteroid
68
106
  if (!rockType) {
@@ -77,10 +115,10 @@ export const parseShipRock = (ocrText) => {
77
115
  }
78
116
  }
79
117
  // 5. Ores
80
- // Refined logic: Iterate words in line. Identify Ores. Look for adjacent %.
81
- const words = lineUpper.split(/\s+/);
118
+ // Refined logic: Split by most delimiters to isolate tokens. Identify Ores. Look for adjacent %.
119
+ const words = lineUpper.split(/[^A-Z0-9%.-]+/).filter((w) => w.length > 0);
82
120
  for (let i = 0; i < words.length; i++) {
83
- const w = words[i].replace(/[^A-Z0-9%.-]/g, ''); // Clean word
121
+ const w = words[i];
84
122
  if (w.length < 3)
85
123
  continue;
86
124
  // Check if w is an Ore (Best match)
@@ -89,7 +127,7 @@ export const parseShipRock = (ocrText) => {
89
127
  for (const ore of allOres) {
90
128
  let dist = levenshtein(w, ore.toUpperCase());
91
129
  // Special cases
92
- if (w === 'INERT') {
130
+ if (INERT_KEYWORDS.includes(w)) {
93
131
  if (ore === ShipOreEnum.Inertmaterial)
94
132
  dist = 0;
95
133
  }
@@ -134,7 +172,8 @@ export const parseShipRock = (ocrText) => {
134
172
  if (percentVal > 0) {
135
173
  if (percentVal > 1)
136
174
  percentVal /= 100;
137
- if (!ores.find((o) => o.ore === bestOre)) {
175
+ percentVal = Math.round(percentVal * 10000) / 10000;
176
+ if (!ores.find((o) => o.ore === bestOre) && bestOre !== ShipOreEnum.Inertmaterial) {
138
177
  ores.push({
139
178
  ore: bestOre,
140
179
  percent: percentVal,
@@ -145,11 +184,31 @@ export const parseShipRock = (ocrText) => {
145
184
  }
146
185
  }
147
186
  }
187
+ // Fallbacks for Instability and Resistance if not found
188
+ if (inst === undefined || res === undefined) {
189
+ // Heuristic: If only two numbers and mass is known, assign the others
190
+ const filtered = allNumbers.filter((n) => n !== mass);
191
+ if (filtered.length === 2) {
192
+ if (inst === undefined)
193
+ inst = filtered[0];
194
+ if (res === undefined)
195
+ res = filtered[1] > 1 ? filtered[1] / 100 : filtered[1];
196
+ }
197
+ else if (filtered.length > 0) {
198
+ // If only one is missing, try to assign
199
+ if (inst === undefined) {
200
+ inst = filtered[0];
201
+ }
202
+ else if (res === undefined) {
203
+ res = filtered[0] > 1 ? filtered[0] / 100 : filtered[0];
204
+ }
205
+ }
206
+ }
148
207
  return {
149
208
  __typename: 'ShipRockCapture',
150
209
  mass,
151
210
  inst,
152
- res,
211
+ res: res !== null && res !== void 0 ? res : 0,
153
212
  rockType,
154
213
  ores,
155
214
  };
@@ -1 +1 @@
1
- {"version":3,"file":"shipRock.js","sourceRoot":"","sources":["../../src/parsers/shipRock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shipRock.js","sourceRoot":"","sources":["../../src/parsers/shipRock.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,21 @@
1
+ /**
2
+ * Trims whitespace from the beginning and end of a string.
3
+ * @param text The string to clean.
4
+ * @returns The trimmed string.
5
+ */
1
6
  export declare const cleanLine: (text: string) => string;
7
+ /**
8
+ * Calculates the Levenshtein distance between two strings using dynamic programming.
9
+ * @param a The first string.
10
+ * @param b The second string.
11
+ * @returns The Levenshtein edit distance.
12
+ */
2
13
  export declare const levenshtein: (a: string, b: string) => number;
14
+ /**
15
+ * Finds the best match for a given text from a list of candidates based on Levenshtein distance.
16
+ * @param text The text to match.
17
+ * @param candidates A list of candidate strings.
18
+ * @param threshold The maximum allowed distance for a match (default: 2).
19
+ * @returns The best matching candidate, or null if no candidate is within the threshold.
20
+ */
3
21
  export declare const findBestMatch: <T extends string>(text: string, candidates: T[], threshold?: number) => T | null;
@@ -1,6 +1,17 @@
1
+ /**
2
+ * Trims whitespace from the beginning and end of a string.
3
+ * @param text The string to clean.
4
+ * @returns The trimmed string.
5
+ */
1
6
  export const cleanLine = (text) => {
2
7
  return text.trim();
3
8
  };
9
+ /**
10
+ * Calculates the Levenshtein distance between two strings using dynamic programming.
11
+ * @param a The first string.
12
+ * @param b The second string.
13
+ * @returns The Levenshtein edit distance.
14
+ */
4
15
  export const levenshtein = (a, b) => {
5
16
  const matrix = Array.from({ length: a.length + 1 }, () => Array(b.length + 1).fill(0));
6
17
  for (let i = 0; i <= a.length; i++)
@@ -15,6 +26,13 @@ export const levenshtein = (a, b) => {
15
26
  }
16
27
  return matrix[a.length][b.length];
17
28
  };
29
+ /**
30
+ * Finds the best match for a given text from a list of candidates based on Levenshtein distance.
31
+ * @param text The text to match.
32
+ * @param candidates A list of candidate strings.
33
+ * @param threshold The maximum allowed distance for a match (default: 2).
34
+ * @returns The best matching candidate, or null if no candidate is within the threshold.
35
+ */
18
36
  export const findBestMatch = (text, candidates, threshold = 2) => {
19
37
  let bestDist = Infinity;
20
38
  let bestMatch = null;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/parsers/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE;IAChD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAmB,IAAY,EAAE,UAAe,EAAE,YAAoB,CAAC,EAAY,EAAE;IAChH,IAAI,QAAQ,GAAG,QAAQ,CAAA;IACvB,IAAI,SAAS,GAAa,IAAI,CAAA;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAEpC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC9C,IAAI,IAAI,GAAG,QAAQ,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;YACzC,QAAQ,GAAG,IAAI,CAAA;YACf,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/parsers/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE;IAChD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;AACpB,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AACnC,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAmB,IAAY,EAAE,UAAe,EAAE,YAAoB,CAAC,EAAY,EAAE;IAChH,IAAI,QAAQ,GAAG,QAAQ,CAAA;IACvB,IAAI,SAAS,GAAa,IAAI,CAAA;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAEpC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC9C,IAAI,IAAI,GAAG,QAAQ,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;YACzC,QAAQ,GAAG,IAAI,CAAA;YACf,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,17 +1,21 @@
1
1
  {
2
2
  "name": "@regolithco/ocr",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "OCR utilities using PaddleOCR",
5
5
  "type": "module",
6
6
  "main": "dist/node.js",
7
7
  "browser": "dist/browser.js",
8
8
  "types": "dist/node.d.ts",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/RegolithCo/RegolithCo-OCR"
12
+ },
9
13
  "publishConfig": {
10
14
  "access": "public"
11
15
  },
12
16
  "engines": {
13
17
  "node": ">=22 <24"
14
- },
18
+ },
15
19
  "files": [
16
20
  "dist"
17
21
  ],
@@ -20,6 +24,7 @@
20
24
  "prepublishOnly": "yarn run build",
21
25
  "debug": "tsx scripts/debug_paddle.ts",
22
26
  "debug:choose": "tsx scripts/debug_paddle.ts --choose",
27
+ "validate": "tsx scripts/validate_images.ts",
23
28
  "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
24
29
  },
25
30
  "keywords": [
@@ -31,7 +36,6 @@
31
36
  "license": "ISC",
32
37
  "dependencies": {
33
38
  "@gutenye/ocr-browser": "^1.4.8",
34
- "@gutenye/ocr-node": "^1.4.8",
35
39
  "@regolithco/common": "^1.4.7",
36
40
  "graphql": "^16.12.0",
37
41
  "loglevel": "^1.9.2",
@@ -40,6 +44,7 @@
40
44
  "devDependencies": {
41
45
  "@clack/prompts": "^0.11.0",
42
46
  "@faker-js/faker": "8",
47
+ "@gutenye/ocr-node": "^1.4.8",
43
48
  "@types/jest": "^30.0.0",
44
49
  "@types/lodash": "^4.17.20",
45
50
  "@types/node": "^24.5.2",
package/dist/parser.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './parsers/shipRock.js';
2
- export * from './parsers/shipMiningOrder.js';
package/dist/parser.js DELETED
@@ -1,3 +0,0 @@
1
- export * from './parsers/shipRock.js';
2
- export * from './parsers/shipMiningOrder.js';
3
- //# sourceMappingURL=parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC"}