【办公类-41-01】20240312 每篇pdf文献有多少字(pdf转TXT 求字数)

作品展示------查询文献字数

背景需求:

领导:把这份里面的所有文献下载后,查看每篇有多少字

打开www.caj11.com(买了终身会员)查询并下载

输入文献名称

点击下载

这是所有下载后的文件(14个PDF和1个CAJ)

需要查询每篇里面的文字数量

使用AI对话大师,获得代码并反复调试,结果发现

1、无法直接读取PDF和caj的文字数量

2、可以通过pdf转txt,获取txt的文字数量。

3、无法将caj转TXT。

一、PDF转docx

测试1-1:将PDF和caj转成docx

python 复制代码
'''
pdf转docx
作者:AI对话大师、阿夏
时间:2024年3月11日
'''

import os
from pdf2docx import Converter

def convert_to_docx(folder_path, extensions):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_extension = os.path.splitext(file)[1]

            if file_extension.lower() in extensions:
                file_path = os.path.join(root, file)
                output_path = os.path.splitext(file_path)[0] + '.docx'

                if file_extension.lower() == '.pdf':
                    cv = Converter(file_path)
                    cv.convert(output_path)
                    cv.close()


folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
extensions = ['.pdf', '.caj']
convert_to_docx(folder_path, extensions)

CAJ转不了docx

测试1-2:将docx文字数量查询

python 复制代码
'''
pdf转docx docx有多少字
作者:AI对话大师、阿夏
时间:2024年3月11日
'''
# 检测docx有多少字
from docx import Document
import os

folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'

for file_name in os.listdir(folder_path):
    if file_name.endswith(".docx"):
        docx_path = os.path.join(folder_path, file_name)
        doc = Document(docx_path)
        total_characters = 0
        for paragraph in doc.paragraphs:
            total_characters += len(paragraph.text)
        print(f"File: {file_name}, Total Characters: {total_characters}")

其实两者字数也有一定差异。

二、PDF转txt

测试2.1 pdf转txt

python 复制代码
'''
pdf转成txt后查看每篇文字数量
作者:AI对话大师、阿夏
作者:2024年3月11日
'''

print('------1、pdf转 txt------------')
import os
import fitz

# 定义输入和输出文件夹路径
input_folder = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
output_folder = input_folder

# 获取输入文件夹中的所有PDF文件
pdf_files = [f for f in os.listdir(input_folder) if f.endswith(".pdf")]

# 遍历文件列表
for pdf_file in pdf_files:
    # 打开PDF文件
    pdf_path = os.path.join(input_folder, pdf_file)
    pdf_document = fitz.open(pdf_path)
    
    # 逐页读取文本内容
    text = ""
    for page_num in range(pdf_document.page_count):
        page = pdf_document[page_num]
        text += page.get_text()
    
    # 构建输出文件路径
    output_file = os.path.join(output_folder, pdf_file.replace(".pdf", ".txt"))
    
    # 将文本内容写入输出文件
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(text)
    
    pdf_document.close()

print("PDF文件已成功转换为TXT文件。")

测试2.1 txt查询文字数量

python 复制代码
'''
# pdf转成txt后查看每篇文字数量2
# 作者:AI对话大师、阿夏
# 作者:2024年3月11日
'''
print('-----2、txt的字数------------')
import os

def count_text_characters(file_path, encoding):
    with open(file_path, 'r', encoding=encoding, errors='ignore') as file:
        text = file.read()
        return len(text)

# 遍历文件夹下的所有txt文件
folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
for file_name in os.listdir(folder_path):
    file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(file_path) and file_path.endswith('.txt'):
        try:
            characters = count_text_characters(file_path, 'utf-8')
        except UnicodeDecodeError:
            characters = count_text_characters(file_path, 'utf-16')
        print(f"文件: {file_name},文字数量: {characters}")

感觉TXT字数也不是一模一样的数字。只是一个大致的字数范围。

最后发给领导统计结果------字数在8000-22000之间,平均是15000字

不过我对这个字符结果也存在疑问。

相关推荐
国雪3 分钟前
python-协程
python
一木 之林13 分钟前
Python.六.(一)--1.标准库、常用工具与基础操作(进阶)
python·rpc·dubbo
月光船幽幽33 分钟前
铁牌协议卡:节流与重构
python·重构
骇客野人1 小时前
Linux 服务器 Python 版 MCP 服务部署整体方案(适配 Claude/Cursor/自研Agent)
linux·服务器·python
AI视觉网奇1 小时前
动作识别 视频理解大模型
开发语言·python·音视频
Java尧哥学AI1 小时前
35岁Java程序员学AI Day2:从装环境到写第一行Python,踩了3个坑
python
zhiSiBuYu05172 小时前
Flask Session 与 Cookie 新手实战指南
后端·python·flask
码云骑士2 小时前
104-实战论文搜索引擎-ArXiv爬取-Milvus存储-RAG问答-Gradio前端
前端·python·搜索引擎·milvus
比高创意品牌策划设计2 小时前
零售卖场门头设计怎么做才显眼
python
鬼手点金2 小时前
Scrapy + Playwright 完整示例(JS 动态渲染网页)
开发语言·javascript·爬虫·python·scrapy·html·json