High-Level Order of Operations:
[*]Convert original PCL files to PDF
parse pdf для конкретных данных и назначьте его для записи объекта < /li>
< /ul>
Конкретная цель < /strong>: ocr Указанная область страницы PDF. Данные всегда появляются как record/pagecount .
Проблемы, встречающиеся : ocr, неверно считывает числа, несмотря на обучение телсеракта на визуально -идентичное шрифт, а также различные типы предварительной обработки изображения, как описано здесь и здесь. Обертки, используемые в коде. Исходные данные (к сожалению) всегда будут в формате .pcl. Я пишу это в C#, но если есть сценарии, которые я могу запустить, которые помогут оптимизировать PDF перед тем, как запустить его через свой код, я открыт для предложений. Я также перепутал DPI, но это не помогло с точностью. Я играл с Tesseract Enginemode и SegmationMode, а также без изменения вывода. Я пробовал некоторые из шагов, упомянутых в этом посте, но опять же, ничего. Я не включил ни один из шагов предварительной обработки изображения, которые я упомянул в своем коде, потому что он не изменил вывод по сравнению с тем, что у меня есть ниже.
Код: Выделить всё
using (var rasterizer = new GhostscriptRasterizer())
using (var engine = new TesseractEngine(System.IO.Path.Combine(ResourceDir, "tessdata"), "eng", EngineMode.Default))
{
//coords for record area is based on the DPI of the rasterizer, so if you change the DPI, change the coords.
//600 dpi: Rect RecordArea = Rect.FromCoords(1135, 1100, 1900, 1300);
//1200 dpi: Rect RecordArea = Rect.FromCoords(2500, 2200, 4000, 2500);
Rect RecordArea = Rect.FromCoords(2500, 2200, 4000, 2500);
//only read these characters
engine.SetVariable("tessedit_char_whitelist", "01234567890/ ");
rasterizer.Open(file);
int currentPage = 1;
char[] charToTrim = {' ','\n'};
//loop thru all pages in pdf
while (currentPage !String.IsNullOrWhiteSpace(e)).ToList();
//parse record number
tempRecord.RecordID = int.Parse(parsedText.First());
//get first page of record in pdf
tempRecord.FirstPage = currentPage;
//parse page count
tempRecord.PageCount = int.Parse(parsedText.Last());
//get last page of record in pdf
tempRecord.LastPage = tempRecord.FirstPage + tempRecord.PageCount - 1;
//increment based on page count so we only read the first page of each record, not the other statement pages
currentPage += tempRecord.PageCount;
parsedRecords.Add(tempRecord);
}
}
}
wyly. Я чувствую, что упускаю очевидный шаг, но через неделю я не хочу попробовать.
>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -tesseract