gpt4 book ai didi

java - 从 PDF 中提取的 "Empty"字符

转载 作者:行者123 更新时间:2023-11-30 09:24:32 26 4
gpt4 key购买 nike

我最近尝试使用 PDFBox 从 PDF 文件中提取文本。它适用于大多数 PDF,但对于一个 PDF(不幸的是我不允许共享),句子中的所有句点都不会被提取出来。相反,我得到如下短语:

...what it would be It’ll be important later on...

它看起来像一个空格而不是一个句点空格,但它不是(至少在 Mac OS X 上)。如果将文本复制到文本编辑器中并开始在短语中移动文本光标,则在“feet”中的“t”之后会出现一个“空字符”。重现:

  • 将光标放在“feet”中字母“t”的正前方,然后按右箭头键。光标向右移动一步。
  • 再次按向右箭头键,您将停留在原处。
  • 再按一次右箭头键,您将继续到空间的另一边。
  • 继续按向右箭头键的行为符合预期

PDFBox 似乎提取了某种“空字符”来代替句号。我尝试用几种不同的方式替换它,但没有成功:

String oldText = text;
text = text.replace('\u0000', '.'); //Unicode null
text = text.replace('\0', '.'); //C null
System.out.println(oldText.equals(text)); //Returns true
//Also tried text.replace(null, '.'), but it doesn't compile

这个“空字符”是什么?我如何用应该存在的文本替换它?

编辑:This answer建议该字符可能是 \uFEFF 之类的字符,但尝试按照建议将其替换为正则表达式无效。

最佳答案

在意识到字符不是 \uFEFF\u0000 这两个其他 Stack Overflow 用户遇到的 unicode 值后,我决定进行测试弄清楚代码实际上是什么。使用 this answer 中的代码为了确定 unicode 值是什么,我发现神秘字符是 \u0008,即“backspace”。我不知道为什么会从 PDF 中提取它,但 text = text.replace('\u0008', '.') 现在将其替换为缺失的句点。

关于java - 从 PDF 中提取的 "Empty"字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15649427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com