Я использую Tesseract и упаковщик - tesseract.net версия 4.0.0.16
Используя эту оболочку, я создаю доступный для просмотра файл PDF.
tessBaseAPI.SetInputName(imagePath);
using (var pdfRenderer = new PdfRenderer(outputName, tessDataPath, false))
{
pdfRenderer.BeginDocument(filename);
pdfRenderer.AddImage(tessBaseAPI);
pdfRenderer.EndDocument();
}
Далее яиспользуйте PDFsharp-MigraDoc версия 1.50.4619-beta4c
для сжатия PDF и сохранения в виде потока
Stream pdf = new MemoryStream();
PdfSharp.Pdf.PdfDocument document = PdfSharp.Pdf.IO.PdfReader.Open(filePath);
document.Options.FlateEncodeMode = PdfSharp.Pdf.PdfFlateEncodeMode.BestCompression;
document.Options.UseFlateDecoderForJpegImages = PdfSharp.Pdf.PdfUseFlateDecoderForJpegImages.Automatic;
document.Options.NoCompression = false;
document.Options.CompressContentStreams = true;
document.Save(pdf);
В конце я использую iTextSharp версия 5.5.13
для извлечения текста из PDF.PDF читается как байт []
PdfReader reader = new PdfReader(file);
iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(llx,lly,urx,ury);
RenderFilter[] filter = { new RegionTextRenderFilter(rect) };
ITextExtractionStrategy strategy;
StringBuilder sb = new StringBuilder();
strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
string currentText = PdfTextExtractor.GetTextFromPage(reader, currentpage, strategy);
currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
sb.Append(currentText);
Но моя проблема заключается в извлечении текста iTexSharp без национальных символов.
Например:
В PDF есть строка: "Spółka zograniczoną odpowiedzialnością - Spółka «Когда я открываю его в Firefox / Chrome / AdobeReader, следующая строка копируется как« Spółka z ograniczoną odpowiedzialnością - Spółka », но в iTextSharp эта строка извлекается как« SpóBzon z u000 z u000 z u000 z og uz5 u uz z oz5 z u5 u000 z og uz z o z5 z u5 u000 zg u5 z og uz z oz5 u000 z oranSpóBka "
Это извлеченные символы Юникода:
" ą "=" \ u0005 "
" - "=" \ u0014 "
" ę"=" \ u0019 "
" ć "=" \ a "
" ś "=" ["
" ł "=" B "
"ó" = "ó"
У вас есть идеи, где я могу изменить кодировку или язык, чтобы она работала правильно?Я хотел бы отметить, что в PDFsharp-MigraDoc я должен открыть существующий файл.Кроме того, когда я пропускаю сжатие части PDFsharp-MigraDoc, iTextSharp работает точно так же
Я не могу найти какое-либо свойство / параметр / параметр для изменения кодировки.У вас есть идеи, как это сделать или что-то еще?