Introduce detailed progress reporting for PDF layout parsing, exposing phase and page-level updates to clients. Replace legacy parseStatus with a structured parseState field in the database schema, updating all relevant backend and API logic. Add SSE endpoint for real-time parse progress updates. Update client hooks and UI to reflect granular progress and improve user feedback during document parsing. Includes migration scripts and new parse-state utility module.
87 lines
1.6 KiB
TypeScript
87 lines
1.6 KiB
TypeScript
export type ParsedPdfBlockKind =
|
|
| 'abstract'
|
|
| 'algorithm'
|
|
| 'aside_text'
|
|
| 'chart'
|
|
| 'content'
|
|
| 'formula'
|
|
| 'doc_title'
|
|
| 'figure_title'
|
|
| 'footer'
|
|
| 'footnote'
|
|
| 'formula_number'
|
|
| 'header'
|
|
| 'image'
|
|
| 'number'
|
|
| 'paragraph_title'
|
|
| 'reference'
|
|
| 'reference_content'
|
|
| 'seal'
|
|
| 'table'
|
|
| 'text'
|
|
| 'vision_footnote';
|
|
|
|
export const PARSED_PDF_BLOCK_KINDS: ParsedPdfBlockKind[] = [
|
|
'abstract',
|
|
'algorithm',
|
|
'aside_text',
|
|
'chart',
|
|
'content',
|
|
'formula',
|
|
'doc_title',
|
|
'figure_title',
|
|
'footer',
|
|
'footnote',
|
|
'formula_number',
|
|
'header',
|
|
'image',
|
|
'number',
|
|
'paragraph_title',
|
|
'reference',
|
|
'reference_content',
|
|
'seal',
|
|
'table',
|
|
'text',
|
|
'vision_footnote',
|
|
];
|
|
|
|
export interface ParsedPdfBlockFragment {
|
|
page: number;
|
|
bbox: [number, number, number, number];
|
|
text: string;
|
|
readingOrder: number;
|
|
modelConfidence?: number;
|
|
}
|
|
|
|
export interface ParsedPdfBlock {
|
|
id: string;
|
|
kind: ParsedPdfBlockKind;
|
|
fragments: ParsedPdfBlockFragment[];
|
|
text: string;
|
|
parentSectionId?: string;
|
|
}
|
|
|
|
export interface ParsedPdfPage {
|
|
pageNumber: number;
|
|
width: number;
|
|
height: number;
|
|
blocks: ParsedPdfBlock[];
|
|
}
|
|
|
|
export interface ParsedPdfDocument {
|
|
schemaVersion: 1;
|
|
documentId: string;
|
|
parserVersion: string;
|
|
parsedAt: number;
|
|
pages: ParsedPdfPage[];
|
|
}
|
|
|
|
export type PdfParseStatus = 'pending' | 'running' | 'ready' | 'failed';
|
|
export type PdfParsePhase = 'infer' | 'merge';
|
|
|
|
export interface PdfParseProgress {
|
|
totalPages: number;
|
|
pagesParsed: number;
|
|
currentPage?: number;
|
|
phase: PdfParsePhase;
|
|
}
|