Archived
Added split processors
This commit is contained in:
@@ -5,6 +5,7 @@ using Ocr.Tesseract.Configuration;
|
||||
using Ocr.Tesseract.Models;
|
||||
using Ocr.Tesseract.Screenshots;
|
||||
using Ocr.Tesseract.Screenshots.Configuration;
|
||||
using Ocr.Tesseract.Screenshots.Threshold;
|
||||
using Process.Abstract.Configuration;
|
||||
using Process.Interface;
|
||||
using System.Text.RegularExpressions;
|
||||
@@ -69,15 +70,37 @@ namespace Common
|
||||
|
||||
private IProcessor<MagickImage, ScanResult> MakeProcessor()
|
||||
{
|
||||
return new ProcessorChainConfiguration<MagickImage, ScanResult>()
|
||||
.Use(new ScreenshotProcessor(ImageProcessorConfiguration)) // Preprocess input data
|
||||
.Use(new ProcessingEvent<MagickImage>(OnProcessing)) // Scan
|
||||
.Use(new TesseractProcessor(TesseractConfiguration)) // Scan
|
||||
.Use(new ProcessingEvent<ScanResult>(OnProcessed)) // Scan
|
||||
.Use(new ConfidenceFilter(50)) // Process output data
|
||||
.Use(new DuplicateFilter())
|
||||
var threshold =
|
||||
new ThresholdAdaptiveProcessor(ImageProcessorConfiguration.ThresholdWidth,
|
||||
ImageProcessorConfiguration.ThresholdHeight);
|
||||
// var threshold = new AutoThresholdProcessor(AutoThresholdMethod.Kapur);
|
||||
// var threshold = new AutoThresholdProcessor(AutoThresholdMethod.OTSU);
|
||||
// var threshold = new AutoThresholdProcessor(AutoThresholdMethod.Triangle);
|
||||
// var threshold = new ThresholdProcessor(60);
|
||||
|
||||
var preprocessing = new ProcessorChainConfiguration<MagickImage, MagickImage>()
|
||||
.Use(new CloneImageProcessor())
|
||||
.Use(new ResizeProcessor(FilterType.Lanczos2Sharp, PixelInterpolateMethod.Mesh))
|
||||
.Use(new NormalizeProcessor())
|
||||
.Use(threshold)
|
||||
.Use(new AddBorderProcessor(10))
|
||||
.Use(new BinarizeProcessor())
|
||||
.Complete(new NegateCloneProcessor());
|
||||
|
||||
var postprocessing = new ProcessorChainConfiguration<ScanResult, ScanResult>()
|
||||
.Use(new ConfidenceFilter(50))
|
||||
.Use(new ToLowerProcessor())
|
||||
.Use(new DuplicateFilter())
|
||||
.Complete(new RegexFilter(wordRegex));
|
||||
|
||||
var scan = new TesseractProcessor(TesseractConfiguration);
|
||||
|
||||
return new ProcessorChainConfiguration<MagickImage, ScanResult>()
|
||||
.Use(preprocessing)
|
||||
.Use(new ProcessingEvent<MagickImage>(OnProcessing))
|
||||
.Use(scan)
|
||||
.Use(new ProcessingEvent<ScanResult>(OnProcessed))
|
||||
.Complete(postprocessing);
|
||||
}
|
||||
|
||||
protected virtual void OnProcessing(IProcessor sender, ICollection<MagickImage> inputs)
|
||||
|
||||
Reference in New Issue
Block a user