mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(ocr): update API route with quality tiers and backward compat
This commit is contained in:
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user