Извлечение координат с использованием Tesseract 4.0 - PullRequest
0 голосов
/ 12 мая 2018

Я разрабатываю приложение, которое будет использоваться для автоматизации индексации счетов.Одним из вариантов использования моего приложения является извлечение таблиц из отсканированных документов.Для этого мне нужно извлечь координаты всех слов в тексте (если это невозможно, я мог бы также использовать координаты букв).Я планирую использовать Tesseract 4.0 для C #, и я хотел бы знать, возможно ли это.

Спасибо

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете получить ограничивающую рамку для каждого распознанного слова. Ниже приведен пример кода с использованием C # Tesseract wrapper .

 //intialize the TesseractEngine
  using (var engine = new TesseractEngine("path to tessdata folder", "eng", EngineMode.Default))
  {
      //image here is Bitmap on which OCR is to be performed
      using (var page = engine.Process(image, PageSegMode.Auto))
      {
          using (var iterator = page.GetIterator())
          {

              iterator.Begin();
              do
              {
                  string currentWord = iterator.GetText(PageIteratorLevel.Word);
                  //do something with bounds 
                  iterator.TryGetBoundingBox(PageIteratorLevel.Word, out Rect bounds);                                   
               }
               while (iterator.Next(PageIteratorLevel.Word));
          }
      }
   }

Теперь вы можете сохранять границы для каждого слова и писать свою логику, чтобы сопоставить их со строками / столбцами таблицы на основе их ограничивающего прямоугольника (это сложная часть, и если формат таблицы у вас аккуратный, вы сможете его получить работать с некоторыми усилиями.). Кроме того, рассмотрите библиотеку Tabula , чтобы увидеть, может ли она решить проблему под рукой.

...