PDF异常可读文本解码及可搜索粗体文本类型识别问询
嘿,我来帮你搞定这两个PDF文本的问题!
一、可转换为可读文本的异常PDF文本解码方法
这种异常文本大多是PDF内部编码或字体映射搞的鬼,常见的解决思路有这几种:
- 编码映射修正:很多时候是PDF用了自定义的
ToUnicode映射(用来把内部字符编码转成Unicode),你可以先试试用pdftotext工具带布局参数提取,它会自动应用编码映射:
如果还是不行,用PDFtk把PDF解压,找到对应字体的pdftotext -layout 你的PDF文件.pdf 输出文本.txt/ToUnicode流,转成可读的映射表后手动对应字符,或者用专业的PDF编辑工具重新导出为文本。 - 字符顺序调整:有些PDF会把字符绘制顺序搞反(比如从右到左却没标记语言方向),提取后用简单的脚本就能修正,比如Python里一行代码:
fixed_text = 提取到的异常文本[::-1]
二、浏览器可正常检索粗体字符的文本类型与解码
这类文本属于PDF中的结构化文本,不是图片转的文字(不然浏览器搜不到)——PDF里是用了带粗体属性的字体(比如指定了/Bold字体变种,或者设置了/FontWeight属性),只是普通文本提取工具可能忽略了样式,但浏览器的PDF引擎能识别这些样式属性并关联到对应字符。
解码/提取方法很简单:
- 带样式提取:用支持识别字体属性的工具,比如PyPDF2库,能直接筛选出粗体文本:
from PyPDF2 import PdfReader reader = PdfReader("你的PDF文件.pdf") for page in reader.pages: # 提取带字体信息的单词 for word_info in page.extract_words(extra_info=True): # 判断是否为粗体(字体名通常带Bold) if 'bold' in word_info['font'].lower(): print(f"找到粗体文本:{word_info['text']}") - 浏览器直接复制:既然浏览器能搜到,直接打开PDF后全选(Ctrl+A)复制,粘贴到编辑器里,大部分情况下粗体样式会被保留,至少能和普通文本区分开。
内容的提问来源于stack exchange,提问作者Clark
相关产品推荐
相关产品推荐

