我正在使用 pdf2htmlex 解析试卷,当我意识到它将文本保存为图像的一部分而不仅仅是图像中的图形时
这是一个例子
需要注意的是,pdf2htmlex 能够读取 PDF 中的文本 - 这并不是说文本无法识别。进一步检查 pdf 文件后,div 确实包含 pdf 中的文本,但它们是透明的。
我尝试使用 fitz 检查不同的字体系列是否是问题所在。也许仍然如此,但我运行了这段代码:
import fitz
def extract_fonts_from_pdf(pdf_path):
font_families = set()
doc = fitz.open(pdf_path)
for page_num in range(len(doc)):
page = doc.load_page(page_num)
for text_instance in page.get_text("dict")["blocks"]:
for line in text_instance["lines"]:
for span in line["spans"]:
font_family = span["font"]
if font_family:
font_families.add(font_family)
doc.close()
return font_families
def compare_fonts(pdf_path1, pdf_path2):
fonts1 = extract_fonts_from_pdf(pdf_path1)
fonts2 = extract_fonts_from_pdf(pdf_path2)
print("Fonts in PDF 1:")
print(fonts1)
print("\nFonts in PDF 2:")
print(fonts2)
# Example usage
pdf_path1 = "eq8.pdf"
pdf_path2 = "example.pdf"
compare_fonts(pdf_path1, pdf_path2)
其中 example.pdf 是正确解析的 pdf(图像仅包含图形,不含文本),而 eq8.pdf 是图像中包含文本的 pdf。
这是输出:
Fonts in PDF 1:
{'Arial', 'Calibri', 'TimesNRGreekMT', 'Arial,Bold', 'Helvetica-Bold', 'Arial,Italic', 'Helvetica', 'Symbol', 'Cambria,Bold', 'Helvetica-Oblique'}
Fonts in PDF 2:
{'Arial', 'Calibri', 'Arial,Bold', 'Helvetica-Bold', 'Arial,Italic', 'Helvetica', 'Cambria,Bold', 'Helvetica-Oblique'}
有人可以告诉我是否有某种选项可以禁用此行为(图像文件中的文本),以便我只在图像文件中获取图形?它搞乱了我的图像解析算法......
找到答案了。这是由于某些 PDF 质量较差,PDF 上没有文本,只是粘贴在 PDF 上的文本图像。这在转动 --正确文本可见性 0 时很明显。谢谢大家。