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

时间:2017-12-18 13:32:49

标签: pdf itext

我有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;
  }

1 个答案:

答案 0 :(得分:2)

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编码的字体而得到加强。

文本提取

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

  

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

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

iText的

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

  

正在返回空文本

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

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