66 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|