национальные символы / символы юникода извлекаются из PDF C # - PullRequest
0 голосов
/ 05 декабря 2018

Я использую 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 работает точно так же

Я не могу найти какое-либо свойство / параметр / параметр для изменения кодировки.У вас есть идеи, как это сделать или что-то еще?

...