使用itextsharp从pdf中提取文本返回空字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用itextsharp从pdf中提取文本返回空字符串相关的知识,希望对你有一定的参考价值。

我有一个pdf file。安装一些字体后,可以在Edge浏览器或adobe reader中提取文本。请告诉我如何使用itextsharp(最新版本5.x)提取文本。我用这个命令。空文本正在返回。但该文件有8页文字。

  var reader = new PdfReader(bytes);
  var pages = reader.NumberOfPages;
  for (int i = 1; i <= pages; i++)
  {
    var t = PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy());
    text += t;
  }
答案

The PDF

乍一看,PDF似乎是由OCR程序进行的OCR,该程序没有意识到页面旋转了180°。

例如,第二页上的OCR程序以PDF查看器显示为左下角的方式开始:

screenshot bottom left corner page 2

并在此承认

epnq eoⅢ9時u ez `9P...
押印S ’句OP JuP9A...
eA I臥O9叩Od n^Z小no...

这不是那么糟糕,例如epnq eoⅢ...与旋转180°的...mce bude并不完全不同。

OCR软件似乎对CJK字形具有一定的亲和力;这种印象因使用Adobe-Japan1-2 ROS和90ms-RKSJ-H编码的字体而得到加强。

Text extraction

但是,考虑到上述所有信息,我有一些疑问

安装一些字体后,可以在Edge浏览器或adobe reader中提取文本。

至少我怀疑无论安装了多少字体,都可以提取与实际文本类似的任何内容。另一方面,Adobe Reader和Edge开箱即用这里提取从旋转字母识别的奇怪文本。

iText

我对iText的观察不同,而OP报告说

空文本正在返回

我得到了很多CJK字形(我添加了亚洲jar,但这可能会有所不同)。不幸的是,不是通过检查PDF找到的那些。

据我所知,在iText开发到版本5.5.x(含)期间,Encoding + ROS的文本提取从未成为焦点,特别是90ms-RKSJ-H的混合单字节/双字节编码可能不受支持。

以上是关于使用itextsharp从pdf中提取文本返回空字符串的主要内容,如果未能解决你的问题,请参考以下文章

iTextSharp PDF 使用 C# 读取突出显示的文本(突出显示注释)

从在线pdf文件中提取文本(sharepoint)

如何从左下角到左上角更改pdf页面中文本的坐标

iTextSharp 在 pdf 文件中的单词中插入空格

ITextSharp:提取没有小空格的文本

从矩形中提取文本时的 ItextSharp anagram 输出