feat: consolidate backend and docker-compose setup
This commit is contained in:
commit
ff3753a745
306 files changed
+35450
No files matched your search
@@ -0,0 +1,67 @@
|
||||
import 'dart:io';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:image/image.dart' as img;
|
||||
import 'package:app_pfm_ocr_v2/features/camera/blur_detector.dart';
|
||||
|
||||
void main() {
|
||||
test('BlurDetector TDD algorithm test with document borders', () async {
|
||||
final tempDir = Directory.systemTemp.createTempSync();
|
||||
final sharpFile = File('${tempDir.path}/sharp_doc.png');
|
||||
final blurFile = File('${tempDir.path}/blur_doc.png');
|
||||
|
||||
// 1. Generate a sharp document with a black background
|
||||
// Size: 200x200
|
||||
final sharpImg = img.Image(width: 200, height: 200);
|
||||
// Fill with black (background table)
|
||||
img.fill(sharpImg, color: img.ColorRgb8(0, 0, 0));
|
||||
|
||||
// Draw white document in the center (from 40 to 160)
|
||||
for (int y = 40; y < 160; y++) {
|
||||
for (int x = 40; x < 160; x++) {
|
||||
// Draw sharp alternating stripes inside the document to simulate sharp text
|
||||
final isStripe = (x % 6 < 3);
|
||||
final colorVal = isStripe ? 0 : 255;
|
||||
sharpImg.setPixelRgba(x, y, colorVal, colorVal, colorVal, 255);
|
||||
}
|
||||
}
|
||||
sharpFile.writeAsBytesSync(img.encodePng(sharpImg));
|
||||
|
||||
// 2. Generate a blurry document with the same black background
|
||||
final blurImg = img.Image(width: 200, height: 200);
|
||||
img.fill(blurImg, color: img.ColorRgb8(0, 0, 0));
|
||||
|
||||
// Draw white document in the center (from 40 to 160)
|
||||
for (int y = 40; y < 160; y++) {
|
||||
for (int x = 40; x < 160; x++) {
|
||||
// Draw solid white or very blurry gray stripes (low contrast)
|
||||
blurImg.setPixelRgba(x, y, 220, 220, 220, 255);
|
||||
}
|
||||
}
|
||||
// To make it look like a blurred document, we also blur the edges of the white card slightly
|
||||
final blurredDocImg = img.gaussianBlur(blurImg, radius: 2);
|
||||
blurFile.writeAsBytesSync(img.encodePng(blurredDocImg));
|
||||
|
||||
// 3. Run BlurDetector
|
||||
final sharpResult = await BlurDetector.checkBlur(sharpFile.path);
|
||||
final blurResult = await BlurDetector.checkBlur(blurFile.path);
|
||||
|
||||
print('TDD Sharp Doc Score: ${sharpResult.score} (Raw: ${sharpResult.rawScore}, IsBlur: ${sharpResult.isBlur})');
|
||||
print('TDD Blur Doc Score: ${blurResult.score} (Raw: ${blurResult.rawScore}, IsBlur: ${blurResult.isBlur})');
|
||||
|
||||
// 4. Assertions
|
||||
// The sharp document must be detected as sharp (score >= 80.0)
|
||||
expect(sharpResult.score, greaterThanOrEqualTo(80.0));
|
||||
expect(sharpResult.isBlur, isFalse);
|
||||
|
||||
// The blurry document must be detected as blurry (score < 80.0)
|
||||
expect(blurResult.score, lessThan(80.0));
|
||||
expect(blurResult.isBlur, isTrue);
|
||||
|
||||
// Clean up
|
||||
try {
|
||||
sharpFile.deleteSync();
|
||||
blurFile.deleteSync();
|
||||
tempDir.deleteSync();
|
||||
} catch (_) {}
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user