PDF C#中的国家字符/ Unicode字符提取

时间:2018-12-05 08:01:28

标签: pdf itext tesseract pdfsharp

我正在使用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读取为byte []

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ółkazograniczonąodpowiedzialnością-Spółka” 当我在Firefox / Chrome / Adob​​eReader中将其打开时,该行将复制为“Spółkazograniczonąodpowiedzialnością-Spółka” 但是在iTextSharp中,该行被提取为“SpóBkaz ograniczon \ u0005 odpowiedzialno [ci \ u0005 \ u0014SpóBka”

这些是提取的unicode字符:

“±” =“ \ u0005”

“-” =“ \ u0014”

“ę” =“ \ u0019”

“ć” =“ \ a”

“ś” =“ [”

“ł” =“ B”

“ó” =“ó”

您是否知道我可以在哪里更改编码或语言以使其正常工作。我想注意到,在PDFsharp-MigraDoc中,我必须打开现有文件。另外,当我跳过压缩PDFsharp-MigraDoc部分时,iTextSharp的工作原理完全相同

我找不到任何属性/选项/设置来更改编码。 您是否知道该怎么办?

0 个答案:

没有答案