working on crop

This commit is contained in:
Boki 2026-02-12 17:48:16 -05:00
parent 93e2234c4e
commit f74e3e1c85
12 changed files with 1135 additions and 220 deletions

View file

@ -108,7 +108,7 @@ static class Daemon
var engine = request.Engine ?? "tesseract";
var preprocess = request.Preprocess ?? "none";
var kernelSize = request.Params?.KernelSize ?? 41;
var kernelSize = request.Params?.Ocr.KernelSize ?? 41;
// No preprocess + tesseract = original fast path
if (engine == "tesseract" && preprocess == "none")
@ -155,15 +155,17 @@ static class Daemon
{
var engine = request.Engine ?? "tesseract";
var isPythonEngine = engine is "easyocr" or "paddleocr";
var p = request.Params?.Clone() ?? new DiffOcrParams();
if (request.Threshold > 0) p.DiffThresh = request.Threshold;
var p = request.Params ?? new DiffOcrParams();
var cropParams = p.Crop;
var ocrParams = p.Ocr;
if (request.Threshold > 0) cropParams.DiffThresh = request.Threshold;
// Determine preprocess mode: explicit request.Preprocess > params.UseBackgroundSub > default "bgsub"
string preprocess;
if (request.Preprocess != null)
preprocess = request.Preprocess;
else if (request.Params != null)
preprocess = p.UseBackgroundSub ? "bgsub" : "tophat";
preprocess = ocrParams.UseBackgroundSub ? "bgsub" : "tophat";
else
preprocess = "bgsub";
@ -173,25 +175,25 @@ static class Daemon
var sw = System.Diagnostics.Stopwatch.StartNew();
var cropResult = ocrHandler.DiffCrop(request, p);
var cropResult = ocrHandler.DiffCrop(request, cropParams);
if (cropResult == null)
return new OcrResponse { Text = "", Lines = [] };
var (cropped, refCropped, current, region) = cropResult.Value;
using var _current = current;
// Preprocess
// Preprocess — only sees ocrParams
Bitmap processed;
if (preprocess == "bgsub")
{
int upscale = isPythonEngine ? 1 : p.Upscale;
int upscale = isPythonEngine ? 1 : ocrParams.Upscale;
processed = ImagePreprocessor.PreprocessWithBackgroundSub(
cropped, refCropped, dimPercentile: p.DimPercentile, textThresh: p.TextThresh,
upscale: upscale, softThreshold: p.SoftThreshold);
cropped, refCropped, dimPercentile: ocrParams.DimPercentile, textThresh: ocrParams.TextThresh,
upscale: upscale, softThreshold: ocrParams.SoftThreshold);
}
else if (preprocess == "tophat")
{
processed = ImagePreprocessor.PreprocessForOcr(cropped, kernelSize: p.KernelSize);
processed = ImagePreprocessor.PreprocessForOcr(cropped, kernelSize: ocrParams.KernelSize);
}
else // "none"
{
@ -228,7 +230,7 @@ static class Daemon
}
else // easyocr, paddleocr
{
var ocrResult = pythonBridge.OcrFromBitmap(processed, engine);
var ocrResult = pythonBridge.OcrFromBitmap(processed, engine, ocrParams);
var ocrMs = sw.ElapsedMilliseconds;
Console.Error.WriteLine($" diff-ocr-pipeline: engine={engine} preprocess={preprocess} diff={diffMs}ms ocr={ocrMs}ms crop={region.Width}x{region.Height}");