aboutsummaryrefslogtreecommitdiff
path: root/OcrClient/Services
diff options
context:
space:
mode:
authorSerghei Cebotari <serghei@cebotari.ru>2024-11-14 00:16:58 +0300
committerSerghei Cebotari <serghei@cebotari.ru>2024-11-14 00:16:58 +0300
commit2026e2a4e242f1d865928e660d37ac83fd9da1e2 (patch)
treebee21de64ce73a17630d93561de66a9081f6f9a8 /OcrClient/Services
parentac20bbfc05c26766e9a16fbf7c6406db68cf05ae (diff)
Move OcrClient to AddIn project
Diffstat (limited to 'OcrClient/Services')
-rw-r--r--OcrClient/Services/IOcrClient.cs8
-rw-r--r--OcrClient/Services/YandexOcrClient.cs70
2 files changed, 0 insertions, 78 deletions
diff --git a/OcrClient/Services/IOcrClient.cs b/OcrClient/Services/IOcrClient.cs
deleted file mode 100644
index 9b281c9..0000000
--- a/OcrClient/Services/IOcrClient.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using OcrClient.Models;
-
-namespace OcrClient.Services;
-
-public interface IOcrClient
-{
- public Task<IEnumerable<object[,]>> ProcessImage(string base64Image, string xFolderId, string apiKey);
-}
diff --git a/OcrClient/Services/YandexOcrClient.cs b/OcrClient/Services/YandexOcrClient.cs
deleted file mode 100644
index 3146e84..0000000
--- a/OcrClient/Services/YandexOcrClient.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-using System.Net.Http;
-using System.Net.Http.Headers;
-using System.Text;
-using Newtonsoft.Json;
-using OcrClient.Models;
-
-namespace OcrClient.Services;
-
-public class YandexOcrClient : IOcrClient
-{
- private readonly HttpClient _httpClient;
- public YandexOcrClient(HttpClient httpClient)
- {
- _httpClient = httpClient;
- _httpClient.BaseAddress = new Uri("https://ocr.api.cloud.yandex.net/ocr/v1/");
- }
-
- public async Task<IEnumerable<object[,]>> ProcessImage(string base64Image, string xFolderId, string apiKey)
- {
- using StringContent jsonContent = new(
- JsonConvert.SerializeObject(new
- {
- mimeType = "PNG",
- languageCodes = new string[] { "ru", "en" },
- model = "table",
- content = base64Image
- }),
- Encoding.UTF8,
- "application/json");
- _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Api-Key", apiKey);
- _httpClient.DefaultRequestHeaders.Add("x-folder-id", xFolderId);
- _httpClient.DefaultRequestHeaders.Add("x-data-logging-enable", "true");
-
- using HttpResponseMessage response = await _httpClient.PostAsync("recognizeText", jsonContent);
- response.EnsureSuccessStatusCode();
-
- string jsonResponse = await response.Content.ReadAsStringAsync();
- OcrResponse? deserialized = JsonConvert.DeserializeObject<OcrResponse>(jsonResponse);
-
- if (deserialized != null)
- {
- var tables = deserialized?.Result?.TextAnnotation?.Tables ?? Enumerable.Empty<Table>();
- if (tables.Any())
- {
- List<object[,]> result = new();
- foreach (var table in tables)
- {
- if (table.Cells == null || table.Cells.Count == 0)
- {
- continue;
- }
- int columnCount = int.Parse(table.ColumnCount);
- int rowCount = int.Parse(table.RowCount);
- object[,] cells = new object[rowCount, columnCount];
-
- foreach (Cell cell in table.Cells)
- {
- int rowIndex = int.Parse(cell.RowIndex);
- int columnIndex = int.Parse(cell.ColumnIndex);
- cells[rowIndex, columnIndex] = double.TryParse(cell.Text, out double v) ?
- v : cell.Text ?? string.Empty;
- }
- result.Add(cells);
- }
- return result;
- }
- }
- return Enumerable.Empty<object[,]>();
- }
-} \ No newline at end of file