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";
|
||||
|
||||
const settingsSchema = z.object({
|
||||
engine: z.enum(["tesseract", "paddleocr"]).default("tesseract"),
|
||||
language: z.enum(["en", "de", "fr", "es", "zh", "ja", "ko"]).default("en"),
|
||||
quality: z.enum(["fast", "balanced", "best"]).default("balanced"),
|
||||
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" });
|
||||
}
|
||||
|
||||
// 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(
|
||||
{
|
||||
toolId: "ocr",
|
||||
imageSize: fileBuffer.length,
|
||||
engine: settings.engine,
|
||||
quality,
|
||||
language: settings.language,
|
||||
},
|
||||
"Starting OCR",
|
||||
@@ -98,8 +107,9 @@ export function registerOcr(app: FastifyInstance) {
|
||||
fileBuffer,
|
||||
workspacePath,
|
||||
{
|
||||
engine: settings.engine,
|
||||
quality,
|
||||
language: settings.language,
|
||||
enhance: settings.enhance,
|
||||
},
|
||||
onProgress,
|
||||
);
|
||||
@@ -116,7 +126,6 @@ export function registerOcr(app: FastifyInstance) {
|
||||
jobId,
|
||||
filename,
|
||||
text: result.text,
|
||||
engine: result.engine,
|
||||
});
|
||||
} catch (err) {
|
||||
request.log.error({ err, toolId: "ocr" }, "OCR failed");
|
||||
|
||||
Reference in New Issue
Block a user