【办公类-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字

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

相关推荐
R-G-B1 小时前
OpenCV Python——Numpy基本操作(Numpy 矩阵操作、Numpy 矩阵的检索与赋值、Numpy 操作ROI)
python·opencv·numpy·numpy基本操作·numpy 矩阵操作·numpy 矩阵的检索与赋值·numpy 操作roi
细节处有神明1 小时前
Jupyter 中实现交互式图表:ipywidgets 从入门到部署
ide·python·jupyter
小小码农一只1 小时前
Python 爬虫实战:玩转 Playwright 跨浏览器自动化(Chromium/Firefox/WebKit 全支持)
爬虫·python·自动化
深盾安全2 小时前
Python脚本安全防护策略全解析(上)
python
杜子不疼.2 小时前
《Python学习之使用标准库:从入门到实战》
开发语言·python·学习
胡耀超2 小时前
从哲学(业务)视角看待数据挖掘:从认知到实践的螺旋上升
人工智能·python·数据挖掘·大模型·特征工程·crisp-dm螺旋认知·批判性思维
tomelrg3 小时前
多台服务器批量发布arcgisserver服务并缓存切片
服务器·python·arcgis
A尘埃3 小时前
Java+Python混合微服务OCR系统设计
java·python·微服务·混合
哈里谢顿3 小时前
Python 依赖注入详解
python
冬天vs不冷4 小时前
Java基础(九):Object核心类深度剖析
java·开发语言·python