label-studio-converter 1.0.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/index.ts","../src/lib/label-studio.ts","../src/lib/ppocr-label.ts","../src/constants.ts"],"sourcesContent":["export * from './label-studio';\nexport * from './ppocr-label';\n","import * as turf from '@turf/turf';\nimport {\n type FullOCRLabelStudio,\n type MinOCRLabelStudio,\n type PPOCRLabel,\n} from '@/lib/schema';\n\nexport const labelStudioToPPOCR = async (\n data: FullOCRLabelStudio,\n baseImageDir?: string,\n): Promise<Map<string, PPOCRLabel>> => {\n const resultMap = new Map<string, PPOCRLabel>();\n\n for (const task of data) {\n // Extract image path from data.ocr (full path with URL) or file_upload (just filename)\n let imagePath = task.file_upload || '';\n if (task.data.ocr) {\n // Extract path from URL: http://localhost:8081/ch/image.jpg -> ch/image.jpg\n const urlPath = task.data.ocr.replace(/^https?:\\/\\/[^/]+\\//, '');\n imagePath = decodeURIComponent(urlPath);\n }\n\n // Apply baseImageDir if provided\n if (baseImageDir) {\n imagePath = `${baseImageDir}/${task.file_upload || imagePath.split('/').pop() || imagePath}`;\n }\n\n const imageAnnotations: PPOCRLabel = [];\n\n // Process each annotation in the task\n for (const annotation of task.annotations) {\n // Group result items by their ID to avoid duplicates\n // (polygon, labels, and textarea share the same ID)\n const groupedById = new Map<string, typeof annotation.result>();\n\n for (const resultItem of annotation.result) {\n const { id } = resultItem;\n if (!groupedById.has(id)) {\n groupedById.set(id, []);\n }\n groupedById.get(id)!.push(resultItem);\n }\n\n // Process each group of result items (with same ID)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const [_, resultItems] of groupedById) {\n let points: number[][] | undefined;\n let transcription = '';\n\n // Process all result items in this group to extract points and transcription\n for (const resultItem of resultItems) {\n // Extract points from different value types\n if ('points' in resultItem.value && resultItem.value.points) {\n // Polygon/polyline with percentage points - convert to absolute\n const { points: valuePoints } = resultItem.value;\n const { original_width, original_height } = resultItem;\n\n // Convert percentage coordinates to absolute pixels\n points = valuePoints.map(([x, y]) => [\n ((x ?? 0) * original_width) / 100,\n ((y ?? 0) * original_height) / 100,\n ]);\n } else if (\n 'x' in resultItem.value &&\n 'y' in resultItem.value &&\n 'width' in resultItem.value &&\n 'height' in resultItem.value\n ) {\n // Rectangle - convert to 4 corner points\n const { x, y, width, height } = resultItem.value;\n const { original_width, original_height } = resultItem;\n\n // Convert normalized values to absolute coordinates\n const absX = (x * original_width) / 100;\n const absY = (y * original_height) / 100;\n const absWidth = (width * original_width) / 100;\n const absHeight = (height * original_height) / 100;\n\n points = [\n [absX, absY],\n [absX + absWidth, absY],\n [absX + absWidth, absY + absHeight],\n [absX, absY + absHeight],\n ];\n }\n\n // Extract transcription from text field\n if (\n 'text' in resultItem.value &&\n Array.isArray(resultItem.value.text)\n ) {\n transcription = resultItem.value.text[0] || '';\n }\n }\n\n // If we have points, create a PPOCRLabel entry\n if (points && points.length > 0) {\n // Calculate dt_score based on polygon area\n let dt_score = 1.0;\n try {\n const firstPoint = points[0];\n if (firstPoint) {\n const polygon = turf.polygon([points.concat([firstPoint])]);\n const area = turf.area(polygon);\n dt_score = Math.min(1.0, Math.max(0.5, area / 10000));\n }\n } catch {\n dt_score = 0.8;\n }\n\n imageAnnotations.push({\n transcription,\n points,\n dt_score,\n });\n }\n }\n }\n\n if (imageAnnotations.length > 0) {\n resultMap.set(imagePath, imageAnnotations);\n }\n }\n\n return resultMap;\n};\n\nexport const minLabelStudioToPPOCR = async (\n data: MinOCRLabelStudio,\n baseImageDir?: string,\n): Promise<Map<string, PPOCRLabel>> => {\n const resultMap = new Map<string, PPOCRLabel>();\n\n for (const item of data) {\n // Extract image path from ocr URL\n let imagePath = item.ocr || '';\n if (imagePath) {\n // Extract path from URL: http://localhost:8081/ch/image.jpg -> ch/image.jpg\n imagePath = decodeURIComponent(\n imagePath.replace(/^https?:\\/\\/[^/]+\\//, ''),\n );\n }\n\n // Apply baseImageDir if provided\n if (baseImageDir) {\n imagePath = `${baseImageDir}/${imagePath.split('/').pop() || imagePath}`;\n }\n\n // Use poly if available, otherwise convert from bbox\n let points: number[][];\n\n if (item.poly.length > 0 && item.poly[0]) {\n const { points: polyPoints } = item.poly[0];\n points = polyPoints;\n } else if (item.bbox.length > 0 && item.bbox[0]) {\n const bbox = item.bbox[0];\n const { x, y, width, height } = bbox;\n\n // Convert bbox to 4 corner points\n points = [\n [x, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height],\n ];\n } else {\n // Skip if no geometry data\n continue;\n }\n\n // Get transcription text (not the URL)\n const transcription =\n item.transcription.length > 0 ? item.transcription[0] : '';\n\n // Calculate dt_score based on polygon area\n let dt_score = 1.0;\n try {\n const firstPoint = points[0];\n if (firstPoint) {\n const polygon = turf.polygon([points.concat([firstPoint])]);\n const area = turf.area(polygon);\n dt_score = Math.min(1.0, Math.max(0.5, area / 10000));\n }\n } catch {\n dt_score = 0.8;\n }\n\n const annotation = {\n transcription: transcription ?? '',\n points,\n dt_score,\n };\n\n // Group by image path\n if (!resultMap.has(imagePath)) {\n resultMap.set(imagePath, []);\n }\n resultMap.get(imagePath)!.push(annotation);\n }\n\n return resultMap;\n};\n","import { randomUUID } from 'node:crypto';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport sizeOf from 'image-size';\nimport { DEFAULT_LABEL_NAME } from '@/constants';\nimport {\n type FullOCRLabelStudio,\n type MinOCRLabelStudio,\n type PPOCRLabel,\n} from '@/lib/schema';\n\nexport type ToLabelStudioOptions = {\n imagePath: string;\n baseServerUrl: string;\n inputDir?: string;\n toFullJson?: boolean;\n taskId?: number;\n labelName?: string;\n};\n\nexport const ppocrToLabelStudio = async (\n data: PPOCRLabel,\n options: ToLabelStudioOptions,\n): Promise<FullOCRLabelStudio | MinOCRLabelStudio> => {\n const {\n imagePath,\n baseServerUrl,\n inputDir,\n toFullJson = true,\n taskId = 1,\n labelName = DEFAULT_LABEL_NAME,\n } = options || {};\n\n if (toFullJson) {\n return ppocrToFullLabelStudio(\n data,\n imagePath,\n baseServerUrl,\n inputDir,\n taskId,\n labelName,\n );\n } else {\n return ppocrToMinLabelStudio(\n data,\n imagePath,\n baseServerUrl,\n inputDir,\n labelName,\n );\n }\n};\n\nexport const ppocrToFullLabelStudio = (\n data: PPOCRLabel,\n imagePath: string,\n baseServerUrl: string,\n inputDir?: string,\n taskId: number = 1,\n labelName: string = DEFAULT_LABEL_NAME,\n): FullOCRLabelStudio => {\n const newBaseServerUrl =\n baseServerUrl.replace(/\\/+$/, '') + (baseServerUrl === '' ? '' : '/');\n\n const now = new Date().toISOString();\n\n // Get actual image dimensions from the image file\n let original_width = 1920;\n let original_height = 1080;\n\n // Resolve absolute path to image file\n const resolvedImagePath = inputDir ? join(inputDir, imagePath) : imagePath;\n\n if (!existsSync(resolvedImagePath)) {\n throw new Error(`Image file not found: ${resolvedImagePath}`);\n }\n\n const buffer = readFileSync(resolvedImagePath);\n const dimensions = sizeOf(buffer);\n if (!dimensions.width || !dimensions.height) {\n throw new Error(\n `Failed to read image dimensions from: ${resolvedImagePath}`,\n );\n }\n original_width = dimensions.width;\n original_height = dimensions.height;\n\n // Extract filename from imagePath for file_upload (just the filename)\n const fileName = imagePath.split('/').pop() || imagePath;\n\n // Group all PPOCRLabel items into a single task with one annotation\n const result: FullOCRLabelStudio = [\n {\n id: taskId,\n annotations: [\n {\n id: taskId,\n completed_by: 1,\n result: data\n .map((item) => {\n const { points } = item;\n\n // Generate a single ID for all three related annotations\n const annotationId = randomUUID().slice(0, 10);\n const polygonPoints = points.map(([x, y]) => [\n ((x ?? 0) / original_width) * 100,\n ((y ?? 0) / original_height) * 100,\n ]);\n\n // Create result items: polygon, labels, and textarea\n return [\n // 1. Polygon geometry only\n {\n original_width,\n original_height,\n image_rotation: 0,\n value: {\n points: polygonPoints,\n closed: true,\n },\n id: annotationId,\n from_name: 'poly',\n to_name: 'image',\n type: 'polygon',\n origin: 'manual',\n },\n // 2. Labels with polygon geometry\n {\n original_width,\n original_height,\n image_rotation: 0,\n value: {\n points: polygonPoints,\n closed: true,\n labels: [labelName],\n },\n id: annotationId,\n from_name: 'label',\n to_name: 'image',\n type: 'labels',\n origin: 'manual',\n },\n // 3. Textarea with polygon geometry and text\n {\n original_width,\n original_height,\n image_rotation: 0,\n value: {\n points: polygonPoints,\n closed: true,\n text: [item.transcription],\n },\n id: annotationId,\n from_name: 'transcription',\n to_name: 'image',\n type: 'textarea',\n origin: 'manual',\n },\n ];\n })\n .flat(),\n was_cancelled: false,\n ground_truth: false,\n created_at: now,\n updated_at: now,\n draft_created_at: now,\n lead_time: 0,\n prediction: {},\n result_count: data.length * 3,\n unique_id: randomUUID(),\n import_id: null,\n last_action: null,\n bulk_created: false,\n task: taskId,\n project: 1,\n updated_by: 1,\n parent_prediction: null,\n parent_annotation: null,\n last_created_by: null,\n },\n ],\n file_upload: fileName,\n drafts: [],\n predictions: [],\n data: { ocr: `${newBaseServerUrl}${imagePath}` },\n meta: {},\n created_at: now,\n updated_at: now,\n allow_skip: false,\n inner_id: taskId,\n total_annotations: 1,\n cancelled_annotations: 0,\n total_predictions: 0,\n comment_count: 0,\n unresolved_comment_count: 0,\n last_comment_updated_at: null,\n project: 1,\n updated_by: 1,\n comment_authors: [],\n },\n ];\n\n return result;\n};\n\nexport const ppocrToMinLabelStudio = (\n data: PPOCRLabel,\n imagePath: string,\n baseServerUrl: string,\n inputDir?: string,\n labelName: string = 'text',\n): MinOCRLabelStudio => {\n const newBaseServerUrl =\n baseServerUrl.replace(/\\/+$/, '') + (baseServerUrl === '' ? '' : '/');\n\n const now = new Date().toISOString();\n\n // Get actual image dimensions from the image file\n let original_width = 1920;\n let original_height = 1080;\n\n // Resolve absolute path to image file\n const resolvedImagePath = inputDir ? join(inputDir, imagePath) : imagePath;\n\n if (!existsSync(resolvedImagePath)) {\n throw new Error(`Image file not found: ${resolvedImagePath}`);\n }\n\n const buffer = readFileSync(resolvedImagePath);\n const dimensions = sizeOf(buffer);\n if (!dimensions.width || !dimensions.height) {\n throw new Error(\n `Failed to read image dimensions from: ${resolvedImagePath}`,\n );\n }\n original_width = dimensions.width;\n original_height = dimensions.height;\n\n return data.map((item, index) => {\n const { points } = item;\n\n // Calculate bbox from points\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const point of points) {\n const [x, y] = point;\n if (x !== undefined && y !== undefined) {\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n }\n\n const width = maxX - minX;\n const height = maxY - minY;\n\n return {\n ocr: encodeURI(`${newBaseServerUrl}${imagePath}`),\n id: index + 1,\n bbox: [\n {\n x: minX,\n y: minY,\n width,\n height,\n rotation: 0,\n original_width,\n original_height,\n },\n ],\n label: [\n {\n points: points,\n closed: true,\n labels: [labelName],\n original_width,\n original_height,\n },\n ],\n transcription: [item.transcription],\n poly: [\n {\n points: points,\n closed: true,\n original_width,\n original_height,\n },\n ],\n annotator: 1,\n annotation_id: index + 1,\n created_at: now,\n updated_at: now,\n lead_time: 0,\n };\n });\n};\n","export const OUTPUT_BASE_DIR = './output';\n\nexport const DEFAULT_LABEL_NAME = 'Text';\nexport const DEFAULT_LABEL_STUDIO_FULL_JSON = true;\nexport const DEFAULT_CREATE_FILE_PER_IMAGE = false;\nexport const DEFAULT_CREATE_FILE_LIST_FOR_SERVING = true;\nexport const DEFAULT_FILE_LIST_NAME = 'files.txt';\nexport const DEFAULT_BASE_SERVER_URL = 'http://localhost:8081';\n\nexport const DEFAULT_PPOCR_FILE_NAME = 'Label.txt';\n\n// Vertical sorting options\nexport const SORT_VERTICAL_NONE = 'none';\nexport const SORT_VERTICAL_TOP_BOTTOM = 'top-bottom';\nexport const SORT_VERTICAL_BOTTOM_TOP = 'bottom-top';\nexport const DEFAULT_SORT_VERTICAL = SORT_VERTICAL_NONE;\n\n// Horizontal sorting options\nexport const SORT_HORIZONTAL_NONE = 'none';\nexport const SORT_HORIZONTAL_LTR = 'ltr';\nexport const SORT_HORIZONTAL_RTL = 'rtl';\nexport const DEFAULT_SORT_HORIZONTAL = SORT_HORIZONTAL_NONE;\n\nexport type VerticalSortOrder =\n | typeof SORT_VERTICAL_NONE\n | typeof SORT_VERTICAL_TOP_BOTTOM\n | typeof SORT_VERTICAL_BOTTOM_TOP;\n\nexport type HorizontalSortOrder =\n | typeof SORT_HORIZONTAL_NONE\n | typeof SORT_HORIZONTAL_LTR\n | typeof SORT_HORIZONTAL_RTL;\n"],"mappings":"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","names":["polygon","area","sizeOf"]}
@@ -0,0 +1,309 @@
1
+ import z from 'zod';
2
+
3
+ declare const FullOCRLabelStudioSchema: z.ZodArray<z.ZodObject<{
4
+ id: z.ZodNumber;
5
+ annotations: z.ZodArray<z.ZodObject<{
6
+ id: z.ZodNumber;
7
+ completed_by: z.ZodNumber;
8
+ result: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
9
+ original_width: z.ZodNumber;
10
+ original_height: z.ZodNumber;
11
+ image_rotation: z.ZodNumber;
12
+ value: z.ZodObject<{
13
+ x: z.ZodNumber;
14
+ y: z.ZodNumber;
15
+ width: z.ZodNumber;
16
+ height: z.ZodNumber;
17
+ rotation: z.ZodNumber;
18
+ }, z.core.$strip>;
19
+ id: z.ZodString;
20
+ from_name: z.ZodString;
21
+ to_name: z.ZodString;
22
+ type: z.ZodString;
23
+ origin: z.ZodString;
24
+ }, z.core.$strip>, z.ZodObject<{
25
+ original_width: z.ZodNumber;
26
+ original_height: z.ZodNumber;
27
+ image_rotation: z.ZodNumber;
28
+ value: z.ZodObject<{
29
+ x: z.ZodNumber;
30
+ y: z.ZodNumber;
31
+ width: z.ZodNumber;
32
+ height: z.ZodNumber;
33
+ rotation: z.ZodNumber;
34
+ labels: z.ZodArray<z.ZodString>;
35
+ }, z.core.$strip>;
36
+ id: z.ZodString;
37
+ from_name: z.ZodString;
38
+ to_name: z.ZodString;
39
+ type: z.ZodString;
40
+ origin: z.ZodString;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ original_width: z.ZodNumber;
43
+ original_height: z.ZodNumber;
44
+ image_rotation: z.ZodNumber;
45
+ value: z.ZodObject<{
46
+ x: z.ZodNumber;
47
+ y: z.ZodNumber;
48
+ width: z.ZodNumber;
49
+ height: z.ZodNumber;
50
+ rotation: z.ZodNumber;
51
+ text: z.ZodArray<z.ZodString>;
52
+ }, z.core.$strip>;
53
+ id: z.ZodString;
54
+ from_name: z.ZodString;
55
+ to_name: z.ZodString;
56
+ type: z.ZodString;
57
+ origin: z.ZodString;
58
+ }, z.core.$strip>, z.ZodObject<{
59
+ original_width: z.ZodNumber;
60
+ original_height: z.ZodNumber;
61
+ image_rotation: z.ZodNumber;
62
+ value: z.ZodObject<{
63
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
64
+ closed: z.ZodBoolean;
65
+ }, z.core.$strip>;
66
+ id: z.ZodString;
67
+ from_name: z.ZodString;
68
+ to_name: z.ZodString;
69
+ type: z.ZodString;
70
+ origin: z.ZodString;
71
+ }, z.core.$strip>, z.ZodObject<{
72
+ original_width: z.ZodNumber;
73
+ original_height: z.ZodNumber;
74
+ image_rotation: z.ZodNumber;
75
+ value: z.ZodObject<{
76
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
77
+ closed: z.ZodBoolean;
78
+ labels: z.ZodArray<z.ZodString>;
79
+ }, z.core.$strip>;
80
+ id: z.ZodString;
81
+ from_name: z.ZodString;
82
+ to_name: z.ZodString;
83
+ type: z.ZodString;
84
+ origin: z.ZodString;
85
+ }, z.core.$strip>, z.ZodObject<{
86
+ original_width: z.ZodNumber;
87
+ original_height: z.ZodNumber;
88
+ image_rotation: z.ZodNumber;
89
+ value: z.ZodObject<{
90
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
91
+ closed: z.ZodBoolean;
92
+ text: z.ZodArray<z.ZodString>;
93
+ }, z.core.$strip>;
94
+ id: z.ZodString;
95
+ from_name: z.ZodString;
96
+ to_name: z.ZodString;
97
+ type: z.ZodString;
98
+ origin: z.ZodString;
99
+ }, z.core.$strip>]>>;
100
+ was_cancelled: z.ZodBoolean;
101
+ ground_truth: z.ZodBoolean;
102
+ created_at: z.ZodString;
103
+ updated_at: z.ZodString;
104
+ draft_created_at: z.ZodString;
105
+ lead_time: z.ZodNumber;
106
+ prediction: z.ZodObject<{}, z.core.$strip>;
107
+ result_count: z.ZodNumber;
108
+ unique_id: z.ZodString;
109
+ import_id: z.ZodNull;
110
+ last_action: z.ZodNull;
111
+ bulk_created: z.ZodBoolean;
112
+ task: z.ZodNumber;
113
+ project: z.ZodNumber;
114
+ updated_by: z.ZodNumber;
115
+ parent_prediction: z.ZodNull;
116
+ parent_annotation: z.ZodNull;
117
+ last_created_by: z.ZodNull;
118
+ }, z.core.$strip>>;
119
+ file_upload: z.ZodString;
120
+ drafts: z.ZodArray<z.ZodObject<{
121
+ id: z.ZodNumber;
122
+ user: z.ZodString;
123
+ created_username: z.ZodString;
124
+ created_ago: z.ZodString;
125
+ result: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
126
+ original_width: z.ZodNumber;
127
+ original_height: z.ZodNumber;
128
+ image_rotation: z.ZodNumber;
129
+ value: z.ZodObject<{
130
+ x: z.ZodNumber;
131
+ y: z.ZodNumber;
132
+ width: z.ZodNumber;
133
+ height: z.ZodNumber;
134
+ rotation: z.ZodNumber;
135
+ }, z.core.$strip>;
136
+ id: z.ZodString;
137
+ from_name: z.ZodString;
138
+ to_name: z.ZodString;
139
+ type: z.ZodString;
140
+ origin: z.ZodString;
141
+ }, z.core.$strip>, z.ZodObject<{
142
+ original_width: z.ZodNumber;
143
+ original_height: z.ZodNumber;
144
+ image_rotation: z.ZodNumber;
145
+ value: z.ZodObject<{
146
+ x: z.ZodNumber;
147
+ y: z.ZodNumber;
148
+ width: z.ZodNumber;
149
+ height: z.ZodNumber;
150
+ rotation: z.ZodNumber;
151
+ labels: z.ZodArray<z.ZodString>;
152
+ }, z.core.$strip>;
153
+ id: z.ZodString;
154
+ from_name: z.ZodString;
155
+ to_name: z.ZodString;
156
+ type: z.ZodString;
157
+ origin: z.ZodString;
158
+ }, z.core.$strip>, z.ZodObject<{
159
+ original_width: z.ZodNumber;
160
+ original_height: z.ZodNumber;
161
+ image_rotation: z.ZodNumber;
162
+ value: z.ZodObject<{
163
+ x: z.ZodNumber;
164
+ y: z.ZodNumber;
165
+ width: z.ZodNumber;
166
+ height: z.ZodNumber;
167
+ rotation: z.ZodNumber;
168
+ text: z.ZodArray<z.ZodString>;
169
+ }, z.core.$strip>;
170
+ id: z.ZodString;
171
+ from_name: z.ZodString;
172
+ to_name: z.ZodString;
173
+ type: z.ZodString;
174
+ origin: z.ZodString;
175
+ }, z.core.$strip>, z.ZodObject<{
176
+ original_width: z.ZodNumber;
177
+ original_height: z.ZodNumber;
178
+ image_rotation: z.ZodNumber;
179
+ value: z.ZodObject<{
180
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
181
+ closed: z.ZodBoolean;
182
+ }, z.core.$strip>;
183
+ id: z.ZodString;
184
+ from_name: z.ZodString;
185
+ to_name: z.ZodString;
186
+ type: z.ZodString;
187
+ origin: z.ZodString;
188
+ }, z.core.$strip>, z.ZodObject<{
189
+ original_width: z.ZodNumber;
190
+ original_height: z.ZodNumber;
191
+ image_rotation: z.ZodNumber;
192
+ value: z.ZodObject<{
193
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
194
+ closed: z.ZodBoolean;
195
+ labels: z.ZodArray<z.ZodString>;
196
+ }, z.core.$strip>;
197
+ id: z.ZodString;
198
+ from_name: z.ZodString;
199
+ to_name: z.ZodString;
200
+ type: z.ZodString;
201
+ origin: z.ZodString;
202
+ }, z.core.$strip>, z.ZodObject<{
203
+ original_width: z.ZodNumber;
204
+ original_height: z.ZodNumber;
205
+ image_rotation: z.ZodNumber;
206
+ value: z.ZodObject<{
207
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
208
+ closed: z.ZodBoolean;
209
+ text: z.ZodArray<z.ZodString>;
210
+ }, z.core.$strip>;
211
+ id: z.ZodString;
212
+ from_name: z.ZodString;
213
+ to_name: z.ZodString;
214
+ type: z.ZodString;
215
+ origin: z.ZodString;
216
+ }, z.core.$strip>]>>;
217
+ lead_time: z.ZodNumber;
218
+ was_postponed: z.ZodBoolean;
219
+ import_id: z.ZodNull;
220
+ created_at: z.ZodString;
221
+ updated_at: z.ZodString;
222
+ task: z.ZodNumber;
223
+ annotation: z.ZodNumber;
224
+ }, z.core.$strip>>;
225
+ predictions: z.ZodArray<z.ZodUnknown>;
226
+ data: z.ZodObject<{
227
+ ocr: z.ZodString;
228
+ }, z.core.$strip>;
229
+ meta: z.ZodObject<{}, z.core.$strip>;
230
+ created_at: z.ZodString;
231
+ updated_at: z.ZodString;
232
+ allow_skip: z.ZodBoolean;
233
+ inner_id: z.ZodNumber;
234
+ total_annotations: z.ZodNumber;
235
+ cancelled_annotations: z.ZodNumber;
236
+ total_predictions: z.ZodNumber;
237
+ comment_count: z.ZodNumber;
238
+ unresolved_comment_count: z.ZodNumber;
239
+ last_comment_updated_at: z.ZodNull;
240
+ project: z.ZodNumber;
241
+ updated_by: z.ZodNumber;
242
+ comment_authors: z.ZodArray<z.ZodUnknown>;
243
+ }, z.core.$strip>>;
244
+ declare const MinOCRLabelStudioSchema: z.ZodArray<z.ZodObject<{
245
+ ocr: z.ZodString;
246
+ id: z.ZodNumber;
247
+ bbox: z.ZodArray<z.ZodObject<{
248
+ x: z.ZodNumber;
249
+ y: z.ZodNumber;
250
+ width: z.ZodNumber;
251
+ height: z.ZodNumber;
252
+ rotation: z.ZodNumber;
253
+ original_width: z.ZodNumber;
254
+ original_height: z.ZodNumber;
255
+ }, z.core.$strip>>;
256
+ label: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
257
+ x: z.ZodNumber;
258
+ y: z.ZodNumber;
259
+ width: z.ZodNumber;
260
+ height: z.ZodNumber;
261
+ rotation: z.ZodNumber;
262
+ labels: z.ZodArray<z.ZodString>;
263
+ original_width: z.ZodNumber;
264
+ original_height: z.ZodNumber;
265
+ }, z.core.$strip>, z.ZodObject<{
266
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
267
+ closed: z.ZodBoolean;
268
+ labels: z.ZodArray<z.ZodString>;
269
+ original_width: z.ZodNumber;
270
+ original_height: z.ZodNumber;
271
+ }, z.core.$strip>]>>;
272
+ transcription: z.ZodArray<z.ZodString>;
273
+ poly: z.ZodArray<z.ZodObject<{
274
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
275
+ closed: z.ZodBoolean;
276
+ original_width: z.ZodNumber;
277
+ original_height: z.ZodNumber;
278
+ }, z.core.$strip>>;
279
+ annotator: z.ZodNumber;
280
+ annotation_id: z.ZodNumber;
281
+ created_at: z.ZodString;
282
+ updated_at: z.ZodString;
283
+ lead_time: z.ZodNumber;
284
+ }, z.core.$strip>>;
285
+ declare const PPOCRLabelSchema: z.ZodArray<z.ZodObject<{
286
+ transcription: z.ZodString;
287
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
288
+ dt_score: z.ZodNumber;
289
+ }, z.core.$strip>>;
290
+ type FullOCRLabelStudio = z.infer<typeof FullOCRLabelStudioSchema>;
291
+ type MinOCRLabelStudio = z.infer<typeof MinOCRLabelStudioSchema>;
292
+ type PPOCRLabel = z.infer<typeof PPOCRLabelSchema>;
293
+
294
+ declare const labelStudioToPPOCR: (data: FullOCRLabelStudio, baseImageDir?: string) => Promise<Map<string, PPOCRLabel>>;
295
+ declare const minLabelStudioToPPOCR: (data: MinOCRLabelStudio, baseImageDir?: string) => Promise<Map<string, PPOCRLabel>>;
296
+
297
+ type ToLabelStudioOptions = {
298
+ imagePath: string;
299
+ baseServerUrl: string;
300
+ inputDir?: string;
301
+ toFullJson?: boolean;
302
+ taskId?: number;
303
+ labelName?: string;
304
+ };
305
+ declare const ppocrToLabelStudio: (data: PPOCRLabel, options: ToLabelStudioOptions) => Promise<FullOCRLabelStudio | MinOCRLabelStudio>;
306
+ declare const ppocrToFullLabelStudio: (data: PPOCRLabel, imagePath: string, baseServerUrl: string, inputDir?: string, taskId?: number, labelName?: string) => FullOCRLabelStudio;
307
+ declare const ppocrToMinLabelStudio: (data: PPOCRLabel, imagePath: string, baseServerUrl: string, inputDir?: string, labelName?: string) => MinOCRLabelStudio;
308
+
309
+ export { type ToLabelStudioOptions, labelStudioToPPOCR, minLabelStudioToPPOCR, ppocrToFullLabelStudio, ppocrToLabelStudio, ppocrToMinLabelStudio };
@@ -0,0 +1,309 @@
1
+ import z from 'zod';
2
+
3
+ declare const FullOCRLabelStudioSchema: z.ZodArray<z.ZodObject<{
4
+ id: z.ZodNumber;
5
+ annotations: z.ZodArray<z.ZodObject<{
6
+ id: z.ZodNumber;
7
+ completed_by: z.ZodNumber;
8
+ result: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
9
+ original_width: z.ZodNumber;
10
+ original_height: z.ZodNumber;
11
+ image_rotation: z.ZodNumber;
12
+ value: z.ZodObject<{
13
+ x: z.ZodNumber;
14
+ y: z.ZodNumber;
15
+ width: z.ZodNumber;
16
+ height: z.ZodNumber;
17
+ rotation: z.ZodNumber;
18
+ }, z.core.$strip>;
19
+ id: z.ZodString;
20
+ from_name: z.ZodString;
21
+ to_name: z.ZodString;
22
+ type: z.ZodString;
23
+ origin: z.ZodString;
24
+ }, z.core.$strip>, z.ZodObject<{
25
+ original_width: z.ZodNumber;
26
+ original_height: z.ZodNumber;
27
+ image_rotation: z.ZodNumber;
28
+ value: z.ZodObject<{
29
+ x: z.ZodNumber;
30
+ y: z.ZodNumber;
31
+ width: z.ZodNumber;
32
+ height: z.ZodNumber;
33
+ rotation: z.ZodNumber;
34
+ labels: z.ZodArray<z.ZodString>;
35
+ }, z.core.$strip>;
36
+ id: z.ZodString;
37
+ from_name: z.ZodString;
38
+ to_name: z.ZodString;
39
+ type: z.ZodString;
40
+ origin: z.ZodString;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ original_width: z.ZodNumber;
43
+ original_height: z.ZodNumber;
44
+ image_rotation: z.ZodNumber;
45
+ value: z.ZodObject<{
46
+ x: z.ZodNumber;
47
+ y: z.ZodNumber;
48
+ width: z.ZodNumber;
49
+ height: z.ZodNumber;
50
+ rotation: z.ZodNumber;
51
+ text: z.ZodArray<z.ZodString>;
52
+ }, z.core.$strip>;
53
+ id: z.ZodString;
54
+ from_name: z.ZodString;
55
+ to_name: z.ZodString;
56
+ type: z.ZodString;
57
+ origin: z.ZodString;
58
+ }, z.core.$strip>, z.ZodObject<{
59
+ original_width: z.ZodNumber;
60
+ original_height: z.ZodNumber;
61
+ image_rotation: z.ZodNumber;
62
+ value: z.ZodObject<{
63
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
64
+ closed: z.ZodBoolean;
65
+ }, z.core.$strip>;
66
+ id: z.ZodString;
67
+ from_name: z.ZodString;
68
+ to_name: z.ZodString;
69
+ type: z.ZodString;
70
+ origin: z.ZodString;
71
+ }, z.core.$strip>, z.ZodObject<{
72
+ original_width: z.ZodNumber;
73
+ original_height: z.ZodNumber;
74
+ image_rotation: z.ZodNumber;
75
+ value: z.ZodObject<{
76
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
77
+ closed: z.ZodBoolean;
78
+ labels: z.ZodArray<z.ZodString>;
79
+ }, z.core.$strip>;
80
+ id: z.ZodString;
81
+ from_name: z.ZodString;
82
+ to_name: z.ZodString;
83
+ type: z.ZodString;
84
+ origin: z.ZodString;
85
+ }, z.core.$strip>, z.ZodObject<{
86
+ original_width: z.ZodNumber;
87
+ original_height: z.ZodNumber;
88
+ image_rotation: z.ZodNumber;
89
+ value: z.ZodObject<{
90
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
91
+ closed: z.ZodBoolean;
92
+ text: z.ZodArray<z.ZodString>;
93
+ }, z.core.$strip>;
94
+ id: z.ZodString;
95
+ from_name: z.ZodString;
96
+ to_name: z.ZodString;
97
+ type: z.ZodString;
98
+ origin: z.ZodString;
99
+ }, z.core.$strip>]>>;
100
+ was_cancelled: z.ZodBoolean;
101
+ ground_truth: z.ZodBoolean;
102
+ created_at: z.ZodString;
103
+ updated_at: z.ZodString;
104
+ draft_created_at: z.ZodString;
105
+ lead_time: z.ZodNumber;
106
+ prediction: z.ZodObject<{}, z.core.$strip>;
107
+ result_count: z.ZodNumber;
108
+ unique_id: z.ZodString;
109
+ import_id: z.ZodNull;
110
+ last_action: z.ZodNull;
111
+ bulk_created: z.ZodBoolean;
112
+ task: z.ZodNumber;
113
+ project: z.ZodNumber;
114
+ updated_by: z.ZodNumber;
115
+ parent_prediction: z.ZodNull;
116
+ parent_annotation: z.ZodNull;
117
+ last_created_by: z.ZodNull;
118
+ }, z.core.$strip>>;
119
+ file_upload: z.ZodString;
120
+ drafts: z.ZodArray<z.ZodObject<{
121
+ id: z.ZodNumber;
122
+ user: z.ZodString;
123
+ created_username: z.ZodString;
124
+ created_ago: z.ZodString;
125
+ result: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
126
+ original_width: z.ZodNumber;
127
+ original_height: z.ZodNumber;
128
+ image_rotation: z.ZodNumber;
129
+ value: z.ZodObject<{
130
+ x: z.ZodNumber;
131
+ y: z.ZodNumber;
132
+ width: z.ZodNumber;
133
+ height: z.ZodNumber;
134
+ rotation: z.ZodNumber;
135
+ }, z.core.$strip>;
136
+ id: z.ZodString;
137
+ from_name: z.ZodString;
138
+ to_name: z.ZodString;
139
+ type: z.ZodString;
140
+ origin: z.ZodString;
141
+ }, z.core.$strip>, z.ZodObject<{
142
+ original_width: z.ZodNumber;
143
+ original_height: z.ZodNumber;
144
+ image_rotation: z.ZodNumber;
145
+ value: z.ZodObject<{
146
+ x: z.ZodNumber;
147
+ y: z.ZodNumber;
148
+ width: z.ZodNumber;
149
+ height: z.ZodNumber;
150
+ rotation: z.ZodNumber;
151
+ labels: z.ZodArray<z.ZodString>;
152
+ }, z.core.$strip>;
153
+ id: z.ZodString;
154
+ from_name: z.ZodString;
155
+ to_name: z.ZodString;
156
+ type: z.ZodString;
157
+ origin: z.ZodString;
158
+ }, z.core.$strip>, z.ZodObject<{
159
+ original_width: z.ZodNumber;
160
+ original_height: z.ZodNumber;
161
+ image_rotation: z.ZodNumber;
162
+ value: z.ZodObject<{
163
+ x: z.ZodNumber;
164
+ y: z.ZodNumber;
165
+ width: z.ZodNumber;
166
+ height: z.ZodNumber;
167
+ rotation: z.ZodNumber;
168
+ text: z.ZodArray<z.ZodString>;
169
+ }, z.core.$strip>;
170
+ id: z.ZodString;
171
+ from_name: z.ZodString;
172
+ to_name: z.ZodString;
173
+ type: z.ZodString;
174
+ origin: z.ZodString;
175
+ }, z.core.$strip>, z.ZodObject<{
176
+ original_width: z.ZodNumber;
177
+ original_height: z.ZodNumber;
178
+ image_rotation: z.ZodNumber;
179
+ value: z.ZodObject<{
180
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
181
+ closed: z.ZodBoolean;
182
+ }, z.core.$strip>;
183
+ id: z.ZodString;
184
+ from_name: z.ZodString;
185
+ to_name: z.ZodString;
186
+ type: z.ZodString;
187
+ origin: z.ZodString;
188
+ }, z.core.$strip>, z.ZodObject<{
189
+ original_width: z.ZodNumber;
190
+ original_height: z.ZodNumber;
191
+ image_rotation: z.ZodNumber;
192
+ value: z.ZodObject<{
193
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
194
+ closed: z.ZodBoolean;
195
+ labels: z.ZodArray<z.ZodString>;
196
+ }, z.core.$strip>;
197
+ id: z.ZodString;
198
+ from_name: z.ZodString;
199
+ to_name: z.ZodString;
200
+ type: z.ZodString;
201
+ origin: z.ZodString;
202
+ }, z.core.$strip>, z.ZodObject<{
203
+ original_width: z.ZodNumber;
204
+ original_height: z.ZodNumber;
205
+ image_rotation: z.ZodNumber;
206
+ value: z.ZodObject<{
207
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
208
+ closed: z.ZodBoolean;
209
+ text: z.ZodArray<z.ZodString>;
210
+ }, z.core.$strip>;
211
+ id: z.ZodString;
212
+ from_name: z.ZodString;
213
+ to_name: z.ZodString;
214
+ type: z.ZodString;
215
+ origin: z.ZodString;
216
+ }, z.core.$strip>]>>;
217
+ lead_time: z.ZodNumber;
218
+ was_postponed: z.ZodBoolean;
219
+ import_id: z.ZodNull;
220
+ created_at: z.ZodString;
221
+ updated_at: z.ZodString;
222
+ task: z.ZodNumber;
223
+ annotation: z.ZodNumber;
224
+ }, z.core.$strip>>;
225
+ predictions: z.ZodArray<z.ZodUnknown>;
226
+ data: z.ZodObject<{
227
+ ocr: z.ZodString;
228
+ }, z.core.$strip>;
229
+ meta: z.ZodObject<{}, z.core.$strip>;
230
+ created_at: z.ZodString;
231
+ updated_at: z.ZodString;
232
+ allow_skip: z.ZodBoolean;
233
+ inner_id: z.ZodNumber;
234
+ total_annotations: z.ZodNumber;
235
+ cancelled_annotations: z.ZodNumber;
236
+ total_predictions: z.ZodNumber;
237
+ comment_count: z.ZodNumber;
238
+ unresolved_comment_count: z.ZodNumber;
239
+ last_comment_updated_at: z.ZodNull;
240
+ project: z.ZodNumber;
241
+ updated_by: z.ZodNumber;
242
+ comment_authors: z.ZodArray<z.ZodUnknown>;
243
+ }, z.core.$strip>>;
244
+ declare const MinOCRLabelStudioSchema: z.ZodArray<z.ZodObject<{
245
+ ocr: z.ZodString;
246
+ id: z.ZodNumber;
247
+ bbox: z.ZodArray<z.ZodObject<{
248
+ x: z.ZodNumber;
249
+ y: z.ZodNumber;
250
+ width: z.ZodNumber;
251
+ height: z.ZodNumber;
252
+ rotation: z.ZodNumber;
253
+ original_width: z.ZodNumber;
254
+ original_height: z.ZodNumber;
255
+ }, z.core.$strip>>;
256
+ label: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
257
+ x: z.ZodNumber;
258
+ y: z.ZodNumber;
259
+ width: z.ZodNumber;
260
+ height: z.ZodNumber;
261
+ rotation: z.ZodNumber;
262
+ labels: z.ZodArray<z.ZodString>;
263
+ original_width: z.ZodNumber;
264
+ original_height: z.ZodNumber;
265
+ }, z.core.$strip>, z.ZodObject<{
266
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
267
+ closed: z.ZodBoolean;
268
+ labels: z.ZodArray<z.ZodString>;
269
+ original_width: z.ZodNumber;
270
+ original_height: z.ZodNumber;
271
+ }, z.core.$strip>]>>;
272
+ transcription: z.ZodArray<z.ZodString>;
273
+ poly: z.ZodArray<z.ZodObject<{
274
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
275
+ closed: z.ZodBoolean;
276
+ original_width: z.ZodNumber;
277
+ original_height: z.ZodNumber;
278
+ }, z.core.$strip>>;
279
+ annotator: z.ZodNumber;
280
+ annotation_id: z.ZodNumber;
281
+ created_at: z.ZodString;
282
+ updated_at: z.ZodString;
283
+ lead_time: z.ZodNumber;
284
+ }, z.core.$strip>>;
285
+ declare const PPOCRLabelSchema: z.ZodArray<z.ZodObject<{
286
+ transcription: z.ZodString;
287
+ points: z.ZodArray<z.ZodArray<z.ZodNumber>>;
288
+ dt_score: z.ZodNumber;
289
+ }, z.core.$strip>>;
290
+ type FullOCRLabelStudio = z.infer<typeof FullOCRLabelStudioSchema>;
291
+ type MinOCRLabelStudio = z.infer<typeof MinOCRLabelStudioSchema>;
292
+ type PPOCRLabel = z.infer<typeof PPOCRLabelSchema>;
293
+
294
+ declare const labelStudioToPPOCR: (data: FullOCRLabelStudio, baseImageDir?: string) => Promise<Map<string, PPOCRLabel>>;
295
+ declare const minLabelStudioToPPOCR: (data: MinOCRLabelStudio, baseImageDir?: string) => Promise<Map<string, PPOCRLabel>>;
296
+
297
+ type ToLabelStudioOptions = {
298
+ imagePath: string;
299
+ baseServerUrl: string;
300
+ inputDir?: string;
301
+ toFullJson?: boolean;
302
+ taskId?: number;
303
+ labelName?: string;
304
+ };
305
+ declare const ppocrToLabelStudio: (data: PPOCRLabel, options: ToLabelStudioOptions) => Promise<FullOCRLabelStudio | MinOCRLabelStudio>;
306
+ declare const ppocrToFullLabelStudio: (data: PPOCRLabel, imagePath: string, baseServerUrl: string, inputDir?: string, taskId?: number, labelName?: string) => FullOCRLabelStudio;
307
+ declare const ppocrToMinLabelStudio: (data: PPOCRLabel, imagePath: string, baseServerUrl: string, inputDir?: string, labelName?: string) => MinOCRLabelStudio;
308
+
309
+ export { type ToLabelStudioOptions, labelStudioToPPOCR, minLabelStudioToPPOCR, ppocrToFullLabelStudio, ppocrToLabelStudio, ppocrToMinLabelStudio };