public PostAnalyzeDocumentResponse PostAnalyzeDocument(PostAnalyzeDocumentRequest request)
        {
            try
            {
                var replaceRegex  = "\\w+\\:\\w+\\/(\\w+)\\;base64\\,";
                var fileTypeRegex = "(?!<=\\w+\\:\\w+\\/)(\\w+)(?=\\;base64\\,)";
                var fileType      = Regex.Match(request.ImageAsBase64, fileTypeRegex).Value;

                var base64 = request.ImageAsBase64.Replace(Regex.Match(request.ImageAsBase64, replaceRegex).Value, "");

                using (var ms = new MemoryStream(Convert.FromBase64String(base64)))
                {
                    Bitmap bitmap = null;
                    switch (fileType)
                    {
                    case "png": bitmap = (Bitmap)Image.FromStream(ms); break;

                    case "pdf": bitmap = (Bitmap)PdfDocument.Load(ms).Render(0, 300, 300, PdfRenderFlags.CorrectFromDpi); break;
                    }

                    return(new PostAnalyzeDocumentResponse()
                    {
                        AnalyzedDocument = interpreter.AnalyzePage(bitmap),
                        Message = string.Empty,
                        Result = PostAnalyzeDocumentResult.Success
                    });
                }
            }
            catch (System.Exception e)
            {
                return(new PostAnalyzeDocumentResponse()
                {
                    Message = e.Message,
                    Result = PostAnalyzeDocumentResult.Failed_InternalError
                });
            }
        }