feat(ocr): update API route with quality tiers and backward compat

This commit is contained in:
Siddharth Kumar Sah
2026-04-12 18:34:50 +08:00
parent 4235875f78
commit 864145f4b1
+14 -5
View File
@@ -8,8 +8,11 @@ import { createWorkspace } from "../../lib/workspace.js";
import { updateSingleFileProgress } from "../progress.js"; import { updateSingleFileProgress } from "../progress.js";
const settingsSchema = z.object({ const settingsSchema = z.object({
engine: z.enum(["tesseract", "paddleocr"]).default("tesseract"), quality: z.enum(["fast", "balanced", "best"]).default("balanced"),
language: z.enum(["en", "de", "fr", "es", "zh", "ja", "ko"]).default("en"), language: z.enum(["auto", "en", "de", "fr", "es", "zh", "ja", "ko"]).default("auto"),
enhance: z.boolean().default(true),
// Backward compat: old "engine" param still accepted
engine: z.enum(["tesseract", "paddleocr"]).optional(),
}); });
/** /**
@@ -70,11 +73,17 @@ export function registerOcr(app: FastifyInstance) {
return reply.status(400).send({ error: "Settings must be valid JSON" }); return reply.status(400).send({ error: "Settings must be valid JSON" });
} }
// Backward compat: map old engine param to quality
let quality = settings.quality;
if (settings.engine && !settingsRaw?.includes('"quality"')) {
quality = settings.engine === "tesseract" ? "fast" : "balanced";
}
request.log.info( request.log.info(
{ {
toolId: "ocr", toolId: "ocr",
imageSize: fileBuffer.length, imageSize: fileBuffer.length,
engine: settings.engine, quality,
language: settings.language, language: settings.language,
}, },
"Starting OCR", "Starting OCR",
@@ -98,8 +107,9 @@ export function registerOcr(app: FastifyInstance) {
fileBuffer, fileBuffer,
workspacePath, workspacePath,
{ {
engine: settings.engine, quality,
language: settings.language, language: settings.language,
enhance: settings.enhance,
}, },
onProgress, onProgress,
); );
@@ -116,7 +126,6 @@ export function registerOcr(app: FastifyInstance) {
jobId, jobId,
filename, filename,
text: result.text, text: result.text,
engine: result.engine,
}); });
} catch (err) { } catch (err) {
request.log.error({ err, toolId: "ocr" }, "OCR failed"); request.log.error({ err, toolId: "ocr" }, "OCR failed");