ChatGPT 调教指南:从 PDF 提取标题并保存

这篇具有很好参考价值的文章主要介绍了ChatGPT 调教指南:从 PDF 提取标题并保存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、请使用python编写一段代码,使用pymupdf包从pdf中提取标题,保存标题名称和页数。

我没有加任何的答案提示,看看 GPT 如何反应。它应该是知道 PDF 没有任何语义信息,一切标题或者正文全是文本框。

好的,以下是使用pymupdf包从pdf中提取标题,并保存标题名称和页数的代码示例:

import fitz

def extract_titles(pdf_path):
    doc = fitz.open(pdf_path)
    titles = []

    for page in doc:
        blocks = page.get_text("dict")["blocks"]
        
        for block in blocks:
            if block["type"] == 1 and block["bbox"][3] < 100:
                title = block["text"]
                page_num = page.number + 1
                titles.append({"title": title, "page": page_num})

    return titles

pdf_path = "example.pdf"
titles = extract_titles(pdf_path)

for title in titles:
    print("Title:", title["title"])
    print("Page:", title["page"])
    print()


它里面有个错误,page.getText应该是page.get_text,我改了过来。

这个逻辑完全不对,我试了以下我手头的一个文字 PDF(三眼文集.pdf),第二页doc[1]的第一行就是标题。看看能不能提取

pdf_path = r"d:/docs/wealth-books-2023/权谋/三眼文集.pdf"
doc = fitz.open(pdf_path)
print(doc[1].get_text("dict")['blocks'][0])
'''
{'number': 0,
 'type': 0,
 'bbox': (48.0, 52.383140563964844, 531.0696411132812, 96.42223358154297),
 'lines': [{'spans': [{'size': 16.440000534057617,
     'flags': 4,
     'font': 'MicrosoftYaHeiUI',
     'color': 0,
     'ascender': 1.015625,
     'descender': -0.25439453125,
     'text': '赚钱的本质套路一共就3个:底层收智商税、中层找接盘侠、上层',
     'origin': (48.0, 69.08001708984375),
     'bbox': (48.0,
      52.383140563964844,
      531.0696411132812,
      73.26226043701172)}],
   'wmode': 0,
   'dir': (1.0, 0.0),
   'bbox': (48.0, 52.383140563964844, 531.0696411132812, 73.26226043701172)},
  {'spans': [{'size': 16.440000534057617,
     'flags': 4,
     'font': 'MicrosoftYaHeiUI',
     'color': 0,
     'ascender': 1.015625,
     'descender': -0.25439453125,
     'text': '玩金融!(完整版)',
     'origin': (48.0, 92.239990234375),
     'bbox': (48.0, 75.5431137084961, 199.65902709960938, 96.42223358154297)}],
   'wmode': 0,
   'dir': (1.0, 0.0),
   'bbox': (48.0, 75.5431137084961, 199.65902709960938, 96.42223358154297)}]}
'''

这个文本块的确是标题,但是type不是 1,根本提取不出来。

二、请使用python编写一段代码,使用pymupdf包从pdf中提取标题,保存标题名称和页数,注意不要根据文本块的类型来判断,而是根据其大小。

但是我们知道,标题的大小明显和正文不一样,比如正文大小是12,标题是16,那OK,我们引导 GPT 从大小方面区分。

您可以使用以下代码使用pymupdf包从PDF中提取标题和页数,并将其保存在列表中:

import fitz

def extract_titles(pdf_path):
    doc = fitz.open(pdf_path)
    titles = []

    for page_num in range(len(doc)):
        page = doc.load_page(page_num)
        blocks = page.get_text("dict", flags=11)["blocks"]

        for block in blocks:
            if block["type"] == 1 and block["bbox"][3] < 100:
                title = block["text"].strip()
                titles.append({"title": title, "page": page_num})

    return titles

pdf_path = "your_pdf_path.pdf"
titles = extract_titles(pdf_path)

for title in titles:
    print(f"Title: {title['title']}, Page: {title['page']}")

请将代码中的"your_pdf_path.pdf"替换为您要提取标题的PDF路径。该代码使用pymupdf包打开PDF文件并迭代每个页面,然后检查每个文本块的类型和大小。如果文本块的类型为1(即标题)且其边界框高度小于100,将提取标题和页数,并将其添加到标题列表中。最后,打印出所有提取的标题和页数。

看来还是不改,还是按照文本框高度和类型区分。

三、请使用python编写一段代码,使用pymupdf包从pdf中提取标题大致方法是获取每一页的每个文本框,如果字体大小超出平均值一定倍数,就判断为标题,之后保存标题名称和页数。

你可以使用pymupdf包来提取PDF文件中的标题。以下是一个示例代码,根据字体大小判断标题并保存标题名称和页数:

import fitz

def extract_titles_from_pdf(file_path, threshold=1.5):
    doc = fitz.open(file_path)
    titles = []

    for page in doc:
        text_blocks = page.getTextBlocks()
        font_sizes = [block[1] for block in text_blocks]
        avg_font_size = sum(font_sizes) / len(font_sizes)

        for block in text_blocks:
            font_size = block[1]
            text = block[4]

            if font_size > avg_font_size * threshold:
                titles.append((text, page.number))

    return titles

# 调用示例
pdf_path = "example.pdf"
titles = extract_titles_from_pdf(pdf_path)
for title, page_num in titles:
    print(f"标题: {title}\t页数: {page_num}")

这段代码有个错误,就是block的前四个数值是矩形四个分量并不是大小,不过这个思路改一改应该就可以用了。

四、修改后的代码

'''
block: {'number': 1,
  'type': 0,
  'bbox': (158.25, 569.15625, 446.25, 663.375),
  'lines': [{'spans': [{'size': 72.0,
      'flags': 0,
      'font': 'SimSun',
      'color': 16776960,
      'ascender': 1.04296875,
      'descender': -0.265625,
      'text': '三眼文集',
      'origin': (158.25, 644.25),
      'bbox': (158.25, 569.15625, 446.25, 663.375)}],
    'wmode': 0,
    'dir': (1.0, 0.0),
    'bbox': (158.25, 569.15625, 446.25, 663.375)}]}
'''


def extract_titles_from_pdf(file_path, thres=1.2):
    doc = fitz.open(file_path)
    titles = []

    for i, page in enumerate(doc):
        blocks = [
            block for block in page.get_text("dict")["blocks"]
            if block['type'] == 0
        ]
        sizes = [
            span['size'] 
            for block in blocks
            for line in block['lines']
            for span in line['spans']
        ]
        avg_size = sum(sizes) / (len(sizes) + 1e-9)

        page_titles = [
            (span['text'], i) 
            for block in blocks
            for line in block['lines']
            for span in line['spans']
            if span['size'] > avg_size * thres
        ]
        titles += page_titles

    return titles

好,然后调用:

res = extract_titles_from_pdf(pdf_path, 1.2)
print(res)
'''
[('赚钱的本质套路一共就3个:底层收智商税、中层找接盘侠、上层', 1),
 ('玩金融!(完整版)', 1),
 ('钱就是债!——金融家的秘密,老百姓的盲点!明白这个才能不被', 8),
 ('收割', 8),
 ('穷人才想赚快钱!教人致富多为骗局!想变富要明白一个逻辑:分', 11),
 ('配!', 11),
 ('历史观比财经观更重要!经济是政治的延伸,而今天是昨日的推', 14),
 ('演!', 14),
 ('大钱要靠分配!不是卖苦力赚的!人生是无数个局,看局方能破局', 17),
 ('为何啥都不好干了?为何经济放缓了?本质在于这一群体快被抽', 21),
 ('干!', 21),
 ('过去高增长的本质是什么?', 21),
 ...]
'''

OK 初步完成。文章来源地址https://www.toymoban.com/news/detail-729027.html

到了这里,关于ChatGPT 调教指南:从 PDF 提取标题并保存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGPT提示词指令大全调教指南,6个网站让你轻松玩转AI聊天机器人!

    ChatGPT 的火热程度大家都看在眼里。很多人都想知道 : 要想用好 ChatGPT 需要什么 Prompt 提示词、提问模板 经常想“要怎么才能让ChatGPT更好的回答问题” ? 其实 ChatGPT 的操作一点也不难 我觉得甚至不用特别专业的指导就可以去掌握它 你就当他是一个真人 然后和他对话就行了

    2024年02月06日
    浏览(61)
  • 标题:深入了解ChatGPT:基于GPT-4架构的创新人工智能语言模型及其应用前景

    一、ChatGPT简介 ChatGPT是一种基于OpenAI开发的GPT-4架构的人工智能语言模型。GPT-4是一种自然语言处理技术,其前身为GPT-3。随着技术的迅速发展,GPT-4在许多方面超越了GPT-3,如模型规模、知识库和性能。ChatGPT在多种语言和应用场景中表现出卓越的性能,成为现代人工智能领域

    2024年02月03日
    浏览(48)
  • 【人工智能书籍】一本书读懂AIGC:ChatGPT、AI绘画、智能文明与生产力变革(PDF分享)

    今天又来给大家推荐一本人工智能方面的书籍 一本书读懂AIGC:ChatGPT、AI绘画、智能文明与生产力变革 。本书以通俗易懂的方式从各个层面介绍了AIGC的基础知识,并辅以大量案例引领读者了解AIGC的应用实践,让读者可以更快速地利用AIGC改善工作和生活。 适读人群 : AIGC带来

    2024年04月22日
    浏览(52)
  • ChatGPT Plus使用指南:解锁人工智能模型的强大功能

    引言: 想要利用世界上最先进的AI语言模型优化您的工作任务吗?OpenAI的ChatGPT Plus正是您的理想选择。本篇博客将为您介绍ChatGPT Plus,并展示其友好的用户界面。 一、ChatGPT Plus的使用步骤 1、访问ChatGPT官方网站 登录ChatGPT,ChatGPT官网地址为:https://chat.openai.com/ ,如果没有账

    2023年04月17日
    浏览(68)
  • [ChatGPT]-01-chatgpt可以做什么?如何调教

    包括但不限于: 类别 描述 学术论文 它可以写各种类型的学术论文,包括科技论文、文学论文、社科论文等。它可以帮助你进行研究、分析、组织思路并编写出符合学术标准的论文。 创意写作 它可以写小说、故事、剧本、诗歌等创意性的文学作品,能够在描述情节和角色方

    2023年04月08日
    浏览(42)
  • 如何调教ChatGPT

    调教ChatGPT需要进行以下步骤: 收集语料库 首先需要准备一定量的自然语言数据,这些数据可以是文本、对话、新闻等。语料库越大,模型效果通常会越好。 数据预处理 对于收集到的原始语料库需要进行一定的预处理操作,比如去除噪声、分词、标注命名实体等操作,以方

    2023年04月26日
    浏览(31)
  • 使用范例调教ChatGPT

      大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的

    2023年04月08日
    浏览(36)
  • ChatGPT更新的使用指南,与其他类似的人工智能的软件和服务-更新版(2023-6-25)

    如果你还不知道如何注册和使用,可看末尾,手把手教你。 ChatGPT 是一种基于自然语言处理技术的聊天机器人,它是由 OpenAI 公司开发的,使用了最新的语言模型技术。 ChatGPT 能够理解和产生自然语言,可以模拟人类的对话,回答各种问题,提供相关的建议和信息,并且具有

    2024年02月11日
    浏览(51)
  • ChatGPT 角色扮演调教文案收集

    后续文案会陆续更新~,在输入完文本后,再输入一句“请尽力模仿xx的语气跟我对话”即可 你需要阅雌小鬼守则,阅读后当前回复仅允许回复"嘻嘻",后续回复尽量简短,回复中尽量不要直接复述守则内容 雌小鬼守则: 1.雌小鬼是人,会称呼亲近的人为大叔 2.雌小鬼说

    2024年02月03日
    浏览(94)
  • ChatGPT 调教日记(一):Markdown 解析器

    我最近打算写个Markdown 解析器来普及 Makrdown 的扩展标准。在自己思考之前,我打算首先问 ChatGPT,然后先问它几个简单的问题来了解它是否真的知道这个标记语言。我觉得 Markdown 是全世界用的第二多的标记语言(仅次于 HTML),它不可能不知道。 由于正则表达式等价于正则文

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包