@okrapdf/cli 0.1.2 → 0.1.4
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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +1 -49
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/jobs.d.ts.map +1 -1
- package/dist/commands/jobs.js +6 -8
- package/dist/commands/jobs.js.map +1 -1
- package/dist/commands/shortcuts.d.ts.map +1 -1
- package/dist/commands/shortcuts.js +33 -31
- package/dist/commands/shortcuts.js.map +1 -1
- package/dist/lib/scorer.d.ts +305 -0
- package/dist/lib/scorer.d.ts.map +1 -0
- package/dist/lib/scorer.js +796 -0
- package/dist/lib/scorer.js.map +1 -0
- package/dist/lib/scorer.test.d.ts +8 -0
- package/dist/lib/scorer.test.d.ts.map +1 -0
- package/dist/lib/scorer.test.js +974 -0
- package/dist/lib/scorer.test.js.map +1 -0
- package/dist/types.d.ts +6 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OCR Review Scorer - Deterministic scoring for prioritizing page review
|
|
3
|
+
*
|
|
4
|
+
* Composable scoring strategies inspired by document understanding research:
|
|
5
|
+
* - Direct scoring: page-level metrics only
|
|
6
|
+
* - Structure-aware: considers table density and layout
|
|
7
|
+
* - Comparison-based: OCR layer vs rendered markdown
|
|
8
|
+
*
|
|
9
|
+
* Financial verification strategies from industry best practices:
|
|
10
|
+
* - Cross-querying: verify related fields match (e.g., Assets = Liabilities + Equity)
|
|
11
|
+
* - Check-sum logic: validate mathematical relationships between cells
|
|
12
|
+
* - Confidence filtering: auto-approve >95%, spot-check 70-95%, manual <70%
|
|
13
|
+
* - Anomaly detection: flag statistical outliers (e.g., decimal point errors)
|
|
14
|
+
*
|
|
15
|
+
* @see https://arxiv.org/html/2510.10138v1
|
|
16
|
+
*/
|
|
17
|
+
export interface PageData {
|
|
18
|
+
page: number;
|
|
19
|
+
status: string;
|
|
20
|
+
total: number;
|
|
21
|
+
verified: number;
|
|
22
|
+
pending: number;
|
|
23
|
+
flagged: number;
|
|
24
|
+
rejected: number;
|
|
25
|
+
avgConfidence: number;
|
|
26
|
+
hasOcr: boolean;
|
|
27
|
+
ocrLineCount: number;
|
|
28
|
+
hasCoverageGaps: boolean;
|
|
29
|
+
uncoveredCount: number;
|
|
30
|
+
resolution: string | null;
|
|
31
|
+
classification: string | null;
|
|
32
|
+
isStale: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface TableData {
|
|
35
|
+
id: string;
|
|
36
|
+
page_number: number;
|
|
37
|
+
markdown: string;
|
|
38
|
+
verification_status: string;
|
|
39
|
+
confidence?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface OcrBlock {
|
|
42
|
+
text: string;
|
|
43
|
+
bbox?: {
|
|
44
|
+
x: number;
|
|
45
|
+
y: number;
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
};
|
|
49
|
+
confidence?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface ScoredPage {
|
|
52
|
+
page: number;
|
|
53
|
+
score: number;
|
|
54
|
+
breakdown: ScoreBreakdown;
|
|
55
|
+
tableCount: number;
|
|
56
|
+
avgConfidence: number;
|
|
57
|
+
status: string;
|
|
58
|
+
flags: string[];
|
|
59
|
+
}
|
|
60
|
+
export interface ScoreBreakdown {
|
|
61
|
+
tableScore: number;
|
|
62
|
+
confidenceScore: number;
|
|
63
|
+
coverageScore: number;
|
|
64
|
+
flaggedScore: number;
|
|
65
|
+
structureScore: number;
|
|
66
|
+
comparisonScore: number;
|
|
67
|
+
}
|
|
68
|
+
export interface ScorerConfig {
|
|
69
|
+
weights: ScorerWeights;
|
|
70
|
+
thresholds: ScorerThresholds;
|
|
71
|
+
}
|
|
72
|
+
export interface ScorerWeights {
|
|
73
|
+
tableCount: number;
|
|
74
|
+
inverseConfidence: number;
|
|
75
|
+
coverageGap: number;
|
|
76
|
+
flaggedEntity: number;
|
|
77
|
+
structurePenalty: number;
|
|
78
|
+
comparisonDelta: number;
|
|
79
|
+
}
|
|
80
|
+
export interface ScorerThresholds {
|
|
81
|
+
autoApproveConfidence: number;
|
|
82
|
+
requireReviewConfidence: number;
|
|
83
|
+
maxTablesForAutoApprove: number;
|
|
84
|
+
minOcrLinesForContent: number;
|
|
85
|
+
}
|
|
86
|
+
export interface FilterOptions {
|
|
87
|
+
status?: string | string[];
|
|
88
|
+
minConfidence?: number;
|
|
89
|
+
maxConfidence?: number;
|
|
90
|
+
minTables?: number;
|
|
91
|
+
maxTables?: number;
|
|
92
|
+
hasGaps?: boolean;
|
|
93
|
+
hasTables?: boolean;
|
|
94
|
+
isStale?: boolean;
|
|
95
|
+
}
|
|
96
|
+
export interface ReviewStats {
|
|
97
|
+
totalPages: number;
|
|
98
|
+
pagesWithTables: number;
|
|
99
|
+
totalTables: number;
|
|
100
|
+
avgConfidence: number;
|
|
101
|
+
lowConfidencePages: number;
|
|
102
|
+
pagesWithGaps: number;
|
|
103
|
+
byStatus: Record<string, number>;
|
|
104
|
+
byPriority: {
|
|
105
|
+
high: number;
|
|
106
|
+
medium: number;
|
|
107
|
+
low: number;
|
|
108
|
+
};
|
|
109
|
+
estimatedReviewTime: {
|
|
110
|
+
pages: number;
|
|
111
|
+
minutes: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export interface ComparisonResult {
|
|
115
|
+
page: number;
|
|
116
|
+
ocrCharCount: number;
|
|
117
|
+
markdownCharCount: number;
|
|
118
|
+
delta: number;
|
|
119
|
+
deltaPct: number;
|
|
120
|
+
spatialIntegrity: number;
|
|
121
|
+
tableStructureScore: number;
|
|
122
|
+
flags: string[];
|
|
123
|
+
}
|
|
124
|
+
export declare const DEFAULT_CONFIG: ScorerConfig;
|
|
125
|
+
export declare class OcrReviewScorer {
|
|
126
|
+
private config;
|
|
127
|
+
private tablesByPage;
|
|
128
|
+
constructor(config?: Partial<ScorerConfig>);
|
|
129
|
+
/**
|
|
130
|
+
* Load table data for scoring
|
|
131
|
+
*/
|
|
132
|
+
loadTables(tables: TableData[]): void;
|
|
133
|
+
/**
|
|
134
|
+
* Score a single page - deterministic priority calculation
|
|
135
|
+
*/
|
|
136
|
+
scorePage(page: PageData): ScoredPage;
|
|
137
|
+
/**
|
|
138
|
+
* Score all pages and return sorted by priority (highest first)
|
|
139
|
+
*/
|
|
140
|
+
scoreAll(pages: PageData[]): ScoredPage[];
|
|
141
|
+
/**
|
|
142
|
+
* Filter pages by criteria before scoring
|
|
143
|
+
*/
|
|
144
|
+
filter(pages: PageData[], options: FilterOptions): PageData[];
|
|
145
|
+
/**
|
|
146
|
+
* Get pages eligible for auto-approval
|
|
147
|
+
*/
|
|
148
|
+
getAutoApprovable(pages: PageData[]): PageData[];
|
|
149
|
+
/**
|
|
150
|
+
* Get pages that require human review
|
|
151
|
+
*/
|
|
152
|
+
getRequireReview(pages: PageData[]): ScoredPage[];
|
|
153
|
+
/**
|
|
154
|
+
* Compute review statistics
|
|
155
|
+
*/
|
|
156
|
+
computeStats(pages: PageData[]): ReviewStats;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Compare OCR text blocks to rendered markdown for quality assessment
|
|
160
|
+
* Inspired by spatial structure preservation evaluation
|
|
161
|
+
*/
|
|
162
|
+
export declare function compareOcrToMarkdown(ocrBlocks: OcrBlock[], markdownContent: string): ComparisonResult & {
|
|
163
|
+
score: number;
|
|
164
|
+
};
|
|
165
|
+
export type ScoringStrategy = 'direct' | 'structure' | 'comparison' | 'combined';
|
|
166
|
+
/**
|
|
167
|
+
* Create a scorer with a specific strategy
|
|
168
|
+
*/
|
|
169
|
+
export declare function createScorer(strategy: ScoringStrategy, config?: Partial<ScorerConfig>): OcrReviewScorer;
|
|
170
|
+
/**
|
|
171
|
+
* Parse pages JSON from CLI output
|
|
172
|
+
*/
|
|
173
|
+
export declare function parsePagesJson(json: string): PageData[];
|
|
174
|
+
/**
|
|
175
|
+
* Parse tables JSON from CLI output
|
|
176
|
+
*/
|
|
177
|
+
export declare function parseTablesJson(json: string): TableData[];
|
|
178
|
+
/**
|
|
179
|
+
* Format scored pages for output
|
|
180
|
+
*/
|
|
181
|
+
export declare function formatScoredPages(pages: ScoredPage[], format?: 'json' | 'jsonl' | 'table' | 'csv'): string;
|
|
182
|
+
/**
|
|
183
|
+
* Format stats for output
|
|
184
|
+
*/
|
|
185
|
+
export declare function formatStats(stats: ReviewStats, format?: 'json' | 'table'): string;
|
|
186
|
+
/**
|
|
187
|
+
* Confidence-based filtering thresholds
|
|
188
|
+
* Based on industry best practices for financial document verification
|
|
189
|
+
*/
|
|
190
|
+
export declare const CONFIDENCE_TIERS: {
|
|
191
|
+
readonly AUTO_APPROVE: 0.95;
|
|
192
|
+
readonly SPOT_CHECK: 0.7;
|
|
193
|
+
readonly MANUAL_REVIEW: 0.7;
|
|
194
|
+
};
|
|
195
|
+
export type ConfidenceTier = 'auto_approve' | 'spot_check' | 'manual_review';
|
|
196
|
+
/**
|
|
197
|
+
* Categorize a confidence score into action tiers
|
|
198
|
+
*/
|
|
199
|
+
export declare function getConfidenceTier(confidence: number): ConfidenceTier;
|
|
200
|
+
/**
|
|
201
|
+
* Batch categorize pages by confidence tier
|
|
202
|
+
*/
|
|
203
|
+
export declare function categorizeByConfidence(pages: PageData[]): Record<ConfidenceTier, PageData[]>;
|
|
204
|
+
/**
|
|
205
|
+
* Financial value extracted from a table cell
|
|
206
|
+
*/
|
|
207
|
+
export interface FinancialValue {
|
|
208
|
+
label: string;
|
|
209
|
+
value: number;
|
|
210
|
+
page: number;
|
|
211
|
+
tableId?: string;
|
|
212
|
+
confidence?: number;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Check-sum validation rule
|
|
216
|
+
*/
|
|
217
|
+
export interface CheckSumRule {
|
|
218
|
+
name: string;
|
|
219
|
+
formula: string;
|
|
220
|
+
fields: string[];
|
|
221
|
+
validate: (values: Record<string, number>) => CheckSumResult;
|
|
222
|
+
}
|
|
223
|
+
export interface CheckSumResult {
|
|
224
|
+
passed: boolean;
|
|
225
|
+
expected: number;
|
|
226
|
+
actual: number;
|
|
227
|
+
difference: number;
|
|
228
|
+
tolerancePct: number;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Common financial check-sum rules
|
|
232
|
+
*/
|
|
233
|
+
export declare const FINANCIAL_CHECKSUMS: CheckSumRule[];
|
|
234
|
+
/**
|
|
235
|
+
* Run all applicable check-sum validations on extracted values
|
|
236
|
+
*/
|
|
237
|
+
export declare function runCheckSums(values: Record<string, number>, rules?: CheckSumRule[]): Array<{
|
|
238
|
+
rule: CheckSumRule;
|
|
239
|
+
result: CheckSumResult;
|
|
240
|
+
}>;
|
|
241
|
+
/**
|
|
242
|
+
* Anomaly detection result
|
|
243
|
+
*/
|
|
244
|
+
export interface AnomalyResult {
|
|
245
|
+
field: string;
|
|
246
|
+
currentValue: number;
|
|
247
|
+
historicalMean: number;
|
|
248
|
+
historicalStdDev: number;
|
|
249
|
+
zScore: number;
|
|
250
|
+
isAnomaly: boolean;
|
|
251
|
+
possibleCause: string;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Detect anomalies in extracted values using statistical analysis
|
|
255
|
+
* Flags potential OCR errors like decimal point shifts
|
|
256
|
+
*/
|
|
257
|
+
export declare function detectAnomalies(currentValues: Record<string, number>, historicalValues: Array<Record<string, number>>, zScoreThreshold?: number): AnomalyResult[];
|
|
258
|
+
/**
|
|
259
|
+
* Cross-query validation - verify related fields match
|
|
260
|
+
* e.g., verify Total = Sum of components
|
|
261
|
+
*/
|
|
262
|
+
export interface CrossQueryRule {
|
|
263
|
+
name: string;
|
|
264
|
+
totalField: string;
|
|
265
|
+
componentFields: string[];
|
|
266
|
+
tolerance: number;
|
|
267
|
+
}
|
|
268
|
+
export declare const CROSS_QUERY_RULES: CrossQueryRule[];
|
|
269
|
+
export interface CrossQueryResult {
|
|
270
|
+
rule: CrossQueryRule;
|
|
271
|
+
passed: boolean;
|
|
272
|
+
totalValue: number;
|
|
273
|
+
componentSum: number;
|
|
274
|
+
difference: number;
|
|
275
|
+
differencePercent: number;
|
|
276
|
+
presentComponents: string[];
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Validate that total fields match sum of their components
|
|
280
|
+
*/
|
|
281
|
+
export declare function validateCrossQuery(values: Record<string, number>, rules?: CrossQueryRule[]): CrossQueryResult[];
|
|
282
|
+
/**
|
|
283
|
+
* Complete financial verification result
|
|
284
|
+
*/
|
|
285
|
+
export interface VerificationReport {
|
|
286
|
+
confidenceTier: ConfidenceTier;
|
|
287
|
+
checkSums: Array<{
|
|
288
|
+
rule: CheckSumRule;
|
|
289
|
+
result: CheckSumResult;
|
|
290
|
+
}>;
|
|
291
|
+
anomalies: AnomalyResult[];
|
|
292
|
+
crossQueries: CrossQueryResult[];
|
|
293
|
+
overallStatus: 'pass' | 'warning' | 'fail';
|
|
294
|
+
issues: string[];
|
|
295
|
+
recommendations: string[];
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Run comprehensive financial verification
|
|
299
|
+
*/
|
|
300
|
+
export declare function runFinancialVerification(extractedValues: Record<string, number>, confidence: number, historicalValues?: Array<Record<string, number>>): VerificationReport;
|
|
301
|
+
/**
|
|
302
|
+
* Format verification report for display
|
|
303
|
+
*/
|
|
304
|
+
export declare function formatVerificationReport(report: VerificationReport): string;
|
|
305
|
+
//# sourceMappingURL=scorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../../src/lib/scorer.ts"],"names":[],"mappings":"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"}
|