Как передать изображение, преобразованное в байтах, для запроса в детекте документа textresult и детектировать документ textexpect, используя .Net? - PullRequest
0 голосов
/ 20 мая 2019

Невозможно передать изображение, преобразованное в байты для запроса.Из-за этого я не могу использовать DetectDocumentTextResult и DetectiveDocumentTextresponse

Это код Java, который я пытался преобразовать в C #

string document = "input.png";

ByteBuffer imageBytes;
using (Stream inputStream = new FileStream(document, FileMode.Open, FileAccess.Read)) {
    imageBytes = ByteBuffer.wrap(IOUtils.toByteArray(inputStream));
}
AmazonTextract client = AmazonTextractClientBuilder.defaultClient();

DetectDocumentTextRequest request = (new DetectDocumentTextRequest()).withDocument(new Document()
                    .withBytes(imageBytes));

DetectDocumentTextResult result = client.detectDocumentText(request);

/ * Это код C #, я не могупередать данные на запрос * /

AmazonTextractClient Atc = new AmazonTextractClient(credentials, config);
Image img = Image.FromFile("D:\\Images\\1.Jpeg");
byte[] ImageBytes = (byte[])(new ImageConverter()).ConvertTo(img, typeof(byte[]));
DetectDocumentTextRequest request = new DetectDocumentTextRequest();
request.Document.Bytes.Read(ImageBytes, 0 , ImageBytes.Length);
DetectDocumentTextResponse res = Atc.DetectDocumentText(request);

1 Ответ

0 голосов
/ 21 мая 2019

Несмотря на то, что свойство говорит байты, оно хочет поток сырой памяти.Фотография - это местоположение файла вашего изображения.Клиент - это ваш клиент AmazonTextractClient, однако вы хотите создать его экземпляр.

var client = new AmazonTextractClient("[KEY ID]", "[ACCESS KEY]", Amazon.RegionEndpoint.USEast1); 

Document MyDocument;
using (Image image = Image.FromFile(photo))
{
    using (MemoryStream m = new MemoryStream())
    {
        image.Save(m, image.RawFormat);
        MyDocument = new Document()
        {
            Bytes = m
        };
    }
}

Тогда для DetectDocumentTextRequest ()

var request = new DetectDocumentTextRequest()
{
    Document = MyDocument
};

var response = client.DetectDocumentText(request);

AnalyzeDocumentRequest () также работает

var DocRequest = new AnalyzeDocumentRequest()
{
    Document = MyDocument,
    FeatureTypes = new List<string> { FeatureType.FORMS, FeatureType.TABLES }
};

var response =  client.AnalyzeDocument(DocRequest);
...