This repository has been archived on 2024-06-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
thesis-src/Examples/ReportGenerator/Program.cs
2023-11-22 06:51:08 +01:00

66 lines
1.6 KiB
C#

using ReportGenerator.Models;
namespace ReportGenerator;
internal static class Program
{
internal static void Main(string[] args)
{
// Retrieve data
Console.WriteLine("Getting data");
var tagFileInfos = GetTagFileInfos(args[0]);
var scanFileInfos = GetScanFileInfos(args[1]);
// Parse
Console.WriteLine("Generating report");
var scans = Scan(tagFileInfos, scanFileInfos);
var report = ReportGenerator
.FromData(scans)
.WithTitle("OCR Report")
.WithBestOf("Best of")
.WithFullStatistic("Statistic");
report.ToFile("Report.md");
Console.WriteLine("Completed");
}
private static IEnumerable<ImageStats> Scan(
IEnumerable<TagFileInfo> tagFileInfos,
IEnumerable<ScanFileInfo> scanFileInfos
)
{
var scanFileLookup = scanFileInfos.ToLookup(i => i.ImageName);
foreach (var i in tagFileInfos)
{
yield return new ImageStats(
i.ImageName,
i.GetWords().Distinct().OrderBy(w => w).ToArray(),
scanFileLookup[i.ImageName]
);
}
}
private static IEnumerable<TagFileInfo> GetTagFileInfos(string dir)
{
if (!Directory.Exists(dir))
{
throw new ArgumentException($"Invalid tagged data directory '{dir}'");
}
return Directory.EnumerateFiles(dir, "*.json").Select(TagFileInfo.FromPath);
}
private static IEnumerable<ScanFileInfo> GetScanFileInfos(string dir)
{
if (!Directory.Exists(dir))
{
throw new ArgumentException($"Invalid scan results directory '{dir}'");
}
return Directory.EnumerateFiles(dir, "*.json").Select(ScanFileInfo.FromPath);
}
}