Однако немалое количество загруженных PDF-файлов повреждено, и когда текст проходит, это полная ерунда. Я не могу загрузить PDF-файл, однако то, как они повреждены, похоже, соответствует моему тестированию.
Например, «sĞƌŝĚŝĂŶ,ŽŵĞƐ:Žď^ĐŚĞĚƵůĞ»
Должно быть написано «Расписание работ Veridian Homes».
Когда я копирую ту же строку из разные файлы, я получаю один и тот же текст.
Я использовал следующий код, чтобы извлечь текст из PDF-файла:
Код: Выделить всё
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.TextExtractor;
string fileName = "fileName";
string fullText = "";
var filePath = "path";
using (var doc = PdfDocument.Open(filePath))
{
foreach (Page page in doc.GetPages())
{
string pageText = ContentOrderTextExtractor.GetText(page);
fullText += pageText;
}
}
string path = @"C:\Users\mry10\Downloads\" + fileName + ".txt";
File.WriteAllText(path, fullText);
Console.WriteLine("Wrote to " + fileName);
Существует ли стандартный способ исправить этот текст? Я пытался добиться этого, переключаясь между различными кодировками, пробуя идеи, упомянутые в этой теме на pdf-свинке, а именно, пытаясь использовать UTF Unknown, но мне не удалось заставить это работать.
Пока это согласованно, я мог бы, надеюсь, просто реализовать преобразование вручную (как при проверке найденного значения символа по сравнению с ожидаемым для всех соответствующих символов), но это кажется довольно неэлегантным.
Я мог бы переключиться на OCR, например как Tesseract, но у него тоже есть некоторые проблемы с реализацией, и я думаю, что полагаться только на извлечение текста должно быть быстрее и точнее.
Кроме того, я знаю, что есть некоторые потенциальные инструменты для исправления поврежденных PDF-файлов, которые можно было бы использовать для их очистки перед запуском моего кода, но это нежизнеспособное решение с точки зрения рабочего процесса.
Подробнее здесь: https://stackoverflow.com/questions/798 ... in-c-sharp
Мобильная версия