Skip to content

Commit

Permalink
Merge pull request #83 from regulaforensics/SP-10497/Decompress_log_fix
Browse files Browse the repository at this point in the history
SP-10497: Fix decompress log
  • Loading branch information
GubinAlexander authored Sep 25, 2023
2 parents 4f2105d + f03fdeb commit aba42a7
Show file tree
Hide file tree
Showing 7 changed files with 1,049 additions and 1,031 deletions.
197 changes: 100 additions & 97 deletions src/Regula.DocumentReader.NetCoreExample/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,103 +8,106 @@

namespace Regula.DocumentReader.NetCoreExample
{
internal static class Program
{
private const string API_BASE_PATH = "API_BASE_PATH";
private const string TEST_LICENSE = "TEST_LICENSE";
private const string LICENSE_FILE_NAME = "regula.license";

public static void Main()
{
var apiBaseUrl = Environment.GetEnvironmentVariable(API_BASE_PATH) ?? "https://api.regulaforensics.com";

var licenseFromEnv =
Environment.GetEnvironmentVariable(TEST_LICENSE); // optional, used here only for smoke test purposes
var licenseFromFile = File.Exists(LICENSE_FILE_NAME)
? File.ReadAllBytes(LICENSE_FILE_NAME)
: null;

var whitePage0 = File.ReadAllBytes("WHITE.jpg");
var irPage0 = File.ReadAllBytes("IR.jpg");
var uvPage0 = File.ReadAllBytes("UV.jpg");

var requestParams = new RecognitionParams()
.WithScenario(Scenario.FULL_AUTH)
.WithResultTypeOutput(new List<int>
{
// actual results
Result.STATUS, Result.AUTHENTICITY, Result.TEXT, Result.IMAGES,
Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES, Result.DOCUMENT_POSITION,
// legacy results
Result.MRZ_TEXT, Result.VISUAL_TEXT, Result.BARCODE_TEXT, Result.RFID_TEXT,
Result.VISUAL_GRAPHICS, Result.BARCODE_GRAPHICS, Result.RFID_GRAPHICS,
Result.LEXICAL_ANALYSIS, Result.IMAGE_QUALITY
});

var request = new RecognitionRequest(requestParams, new List<ProcessRequestImage>
{
new ProcessRequestImage(new ImageDataExt(whitePage0), Light.WHITE),
new ProcessRequestImage(new ImageDataExt(irPage0), Light.IR),
new ProcessRequestImage(new ImageDataExt(uvPage0), Light.UV)
});
var api = licenseFromEnv != null
? new DocumentReaderApi(apiBaseUrl).WithLicense(licenseFromEnv)
: new DocumentReaderApi(apiBaseUrl).WithLicense(licenseFromFile);

var response = api.Process(request);
internal static class Program
{
private const string API_BASE_PATH = "API_BASE_PATH";
private const string TEST_LICENSE = "TEST_LICENSE";
private const string LICENSE_FILE_NAME = "regula.license";

public static void Main()
{
var apiBaseUrl = Environment.GetEnvironmentVariable(API_BASE_PATH) ?? "https://api.regulaforensics.com";

var licenseFromEnv =
Environment.GetEnvironmentVariable(TEST_LICENSE); // optional, used here only for smoke test purposes
var licenseFromFile = File.Exists(LICENSE_FILE_NAME)
? File.ReadAllBytes(LICENSE_FILE_NAME)
: null;

var whitePage0 = File.ReadAllBytes("WHITE.jpg");
var irPage0 = File.ReadAllBytes("IR.jpg");
var uvPage0 = File.ReadAllBytes("UV.jpg");

var requestParams = new RecognitionParams()
.WithScenario(Scenario.FULL_AUTH)
.WithResultTypeOutput(new List<int>
{
// actual results
Result.STATUS, Result.AUTHENTICITY, Result.TEXT, Result.IMAGES,
Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES, Result.DOCUMENT_POSITION,
// legacy results
Result.MRZ_TEXT, Result.VISUAL_TEXT, Result.BARCODE_TEXT, Result.RFID_TEXT,
Result.VISUAL_GRAPHICS, Result.BARCODE_GRAPHICS, Result.RFID_GRAPHICS,
Result.LEXICAL_ANALYSIS, Result.IMAGE_QUALITY
})
.WithLog(false);

var request = new RecognitionRequest(requestParams, new List<ProcessRequestImage>
{
new ProcessRequestImage(new ImageDataExt(whitePage0), Light.WHITE),
new ProcessRequestImage(new ImageDataExt(irPage0), Light.IR),
new ProcessRequestImage(new ImageDataExt(uvPage0), Light.UV)
});
var api = licenseFromEnv != null
? new DocumentReaderApi(apiBaseUrl).WithLicense(licenseFromEnv)
: new DocumentReaderApi(apiBaseUrl).WithLicense(licenseFromFile);

var response = api.Process(request);

Console.WriteLine(response.Log());

var requestJson = request.Json;
var responseJson = response.Json;

// overall status results
var status = response.Status();
var docOverallStatus = status.OverallStatus == CheckResult.OK ? "valid" : "not valid";
var docOpticalTextStatus = status.DetailsOptical.Text == CheckResult.OK ? "valid" : "not valid";

// text results
var docNumberField = response.Text().GetField(TextFieldType.DOCUMENT_NUMBER);
var docNumberVisual = docNumberField.GetValue(Source.VISUAL);
var docNumberMrz = docNumberField.GetValue(Source.MRZ);
var docNumberVisualValidity = docNumberField.SourceValidity(Source.VISUAL);
var docNumberMrzValidity = docNumberField.SourceValidity(Source.MRZ);
var docNumberMrzVisualMatching = docNumberField.CrossSourceComparison(Source.MRZ, Source.VISUAL);

var docType = response.DocumentType();
var docAuthenticity = response.Authenticity();
var docIRB900 = docAuthenticity.IrB900Checks();
var docIRB900Blank = docIRB900?.ChecksByElement(SecurityFeatureType.BLANK);

var docImagePattern = docAuthenticity.ImagePatternChecks();
var docImagePatternBlank = docImagePattern?.ChecksByElement(SecurityFeatureType.BLANK);

var docImageQuality = response.ImageQualityChecks();

var info = api.Ping();
Console.WriteLine("-----------------------------------------------------------------");
Console.WriteLine($" API Version: {info.Version}");
Console.WriteLine("-----------------------------------------------------------------");
Console.WriteLine($" Document Overall Status: {docOverallStatus}");
Console.WriteLine($" Document Optical Text Status: {docOpticalTextStatus}");
Console.WriteLine($" Document Number Visual: {docNumberVisual}");
Console.WriteLine($" Document Number MRZ: {docNumberMrz}", docNumberMrz);
Console.WriteLine($" Document Name: {docType.DocumentName}");
Console.WriteLine($"Validity Of Document Number Visual: {docNumberVisualValidity}");
Console.WriteLine($" Validity Of Document Number MRZ: {docNumberMrzValidity}");
Console.WriteLine($" MRZ-Visual values comparison: {docNumberMrzVisualMatching}");
Console.WriteLine("-----------------------------------------------------------------");

// images results
var documentImage = response.Images().GetField(GraphicFieldType.DOCUMENT_FRONT).GetValue();
var portraitField = response.Images().GetField(GraphicFieldType.PORTRAIT);
var portraitFromVisual = portraitField.GetValue(Source.VISUAL);

File.WriteAllBytes("document-image.jpg", documentImage);
File.WriteAllBytes("portrait.jpg", portraitFromVisual);

// how to get low lvl individual results
// var lexResult = response.ResultByType<LexicalAnalysisResult>(Result.LEXICAL_ANALYSIS);
}
}
var responseJson = response.Json;

// overall status results
var status = response.Status();
var docOverallStatus = status.OverallStatus == CheckResult.OK ? "valid" : "not valid";
var docOpticalTextStatus = status.DetailsOptical.Text == CheckResult.OK ? "valid" : "not valid";

// text results
var docNumberField = response.Text().GetField(TextFieldType.DOCUMENT_NUMBER);
var docNumberVisual = docNumberField.GetValue(Source.VISUAL);
var docNumberMrz = docNumberField.GetValue(Source.MRZ);
var docNumberVisualValidity = docNumberField.SourceValidity(Source.VISUAL);
var docNumberMrzValidity = docNumberField.SourceValidity(Source.MRZ);
var docNumberMrzVisualMatching = docNumberField.CrossSourceComparison(Source.MRZ, Source.VISUAL);

var docType = response.DocumentType();
var docAuthenticity = response.Authenticity();
var docIRB900 = docAuthenticity.IrB900Checks();
var docIRB900Blank = docIRB900?.ChecksByElement(SecurityFeatureType.BLANK);

var docImagePattern = docAuthenticity.ImagePatternChecks();
var docImagePatternBlank = docImagePattern?.ChecksByElement(SecurityFeatureType.BLANK);

var docImageQuality = response.ImageQualityChecks();

var info = api.Ping();
Console.WriteLine("-----------------------------------------------------------------");
Console.WriteLine($" API Version: {info.Version}");
Console.WriteLine("-----------------------------------------------------------------");
Console.WriteLine($" Document Overall Status: {docOverallStatus}");
Console.WriteLine($" Document Optical Text Status: {docOpticalTextStatus}");
Console.WriteLine($" Document Number Visual: {docNumberVisual}");
Console.WriteLine($" Document Number MRZ: {docNumberMrz}", docNumberMrz);
Console.WriteLine($" Document Name: {docType.DocumentName}");
Console.WriteLine($"Validity Of Document Number Visual: {docNumberVisualValidity}");
Console.WriteLine($" Validity Of Document Number MRZ: {docNumberMrzValidity}");
Console.WriteLine($" MRZ-Visual values comparison: {docNumberMrzVisualMatching}");
Console.WriteLine("-----------------------------------------------------------------");

// images results
var documentImage = response.Images().GetField(GraphicFieldType.DOCUMENT_FRONT).GetValue();
var portraitField = response.Images().GetField(GraphicFieldType.PORTRAIT);
var portraitFromVisual = portraitField.GetValue(Source.VISUAL);

File.WriteAllBytes("document-image.jpg", documentImage);
File.WriteAllBytes("portrait.jpg", portraitFromVisual);

// how to get low lvl individual results
// var lexResult = response.ResultByType<LexicalAnalysisResult>(Result.LEXICAL_ANALYSIS);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<PackageReference Include="SharpZipLib" Version="1.4.2" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@
<PackageId>Regula.DocumentReader.NetCoreExampleEncryptedRcl</PackageId>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Regula.DocumentReader.WebClient\Regula.DocumentReader.WebClient.csproj"/>
<ProjectReference Include="..\Regula.DocumentReader.WebClient\Regula.DocumentReader.WebClient.csproj" />
<None Update="license.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="encrypted-rcl.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<PackageReference Include="SharpZipLib" Version="1.4.2" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,16 @@ public RecognitionParams WithResultTypeOutput(List<int> resultTypes) {
return this;
}

public RecognitionParams WithScenario(String scenario)
public RecognitionParams WithScenario(string scenario)
{
Scenario = scenario;
return this;
}

public RecognitionParams WithLog(bool log)
{
Log = log;
return this;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Text;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;

namespace Regula.DocumentReader.WebClient.Model.Ext
{
Expand Down Expand Up @@ -59,14 +59,15 @@ public string Log()
{
return null;
}

byte[] buffer = Convert.FromBase64String(logBase64);
using (MemoryStream memoryStream = new MemoryStream(buffer))
using (DeflateStream deflateStream = new DeflateStream(memoryStream, CompressionMode.Decompress))
using (StreamReader streamReader = new StreamReader(deflateStream, Encoding.UTF8))

using (var compressedStream = new MemoryStream(buffer))
using (var zipStream = new InflaterInputStream(compressedStream))
using (var resultStream = new MemoryStream())
{
return streamReader.ReadToEnd();
zipStream.CopyTo(resultStream);
return Encoding.UTF8.GetString(resultStream.ToArray());
}
}

Expand Down
Loading

0 comments on commit aba42a7

Please sign in to comment.