pix2text 使用经验
给同行打鸡血 😊
构建结构化的数理领域知识库:
- 提高可访问性和可搜索性
- Markdown和LaTeX格式:这两种格式易于在线发布和共享,有助于提高数学内容的可访问性。
- 搜索引擎优化:将PDF内容转换为标记语言,可以增强搜索引擎的索引能力,使得数学知识更容易被检索到。
- 促进知识整合与共享
- 跨平台兼容性:Markdown和LaTeX文档可以在多个平台和设备上无障碍地查看和编辑。
- 版本控制:利用Git等版本控制系统,可以更有效地管理和更新数学知识库。
- 优化内容结构
- 层次化组织:Markdown和LaTeX提供了清晰的标题、列表、引用等结构化元素,有助于组织和呈现复杂的数学概念。
- 模块化内容:将内容分解为小的、可复用的模块,便于构建和管理大规模的知识库。
- 加强学术交流与合作
- 公式编辑与展示:LaTeX特别适合编辑数学公式,保证了学术交流的专业性和准确性。
- 协作编辑:多人可以同时在线编辑同一份文档,促进学术合作。
- 促进知识再利用
- 自动化处理:转换为标记语言后,可以更容易地实现自动化处理,如自动摘要、信息提取等。
- 数据交换:便于与其他数据库或知识管理系统进行数据交换。
具体的贡献点:
对Markdown(.md)文档的贡献:
- 简洁性:Markdown语法简单,易于学习和使用,降低了数学内容创作者的技术门槛。
- 即时预览:许多在线编辑器支持Markdown的即时预览,便于作者快速校对和格式调整。
对LaTeX(.tex)文档的贡献: - 专业排版:LaTeX提供了专业的数学公式排版功能,保证了数学文档的专业性和美观性。
- 学术标准:LaTeX是学术出版界的标准工具,转录PDF为LaTeX文档有助于保持学术出版的一致性。
知识产权隐患
- 版权侵犯:
- 如果PDF文件受版权保护,未经授权将其内容转录可能侵犯原作者或出版商的版权。
- 即使是用于教育或研究目的,也需要确保符合“公平使用”(Fair Use)原则。
- 专利权:
- 数学理论或方法可能受到专利保护,未经许可的转录可能侵犯专利权。
- 商标权:
- 在转录过程中,如果使用了他人的商标或标识,可能会侵犯商标权。
学术道德隐患
- 抄袭与剽窃:
- 在转录过程中,如果不正确引用或标明原文出处,可能被视为抄袭或剽窃行为。
- 即使是转换格式,也需要确保给予原作者适当的学术认可。
- 篡改内容:
- 在转录过程中,如果无意或故意修改了原文内容,可能会误导读者,违反学术诚信。
- 不当使用:
- 将受版权保护的学术作品用于商业目的或未经授权的公开传播,可能违反学术道德规范。
学术规范隐患
- 引用和参考文献:
- 在Markdown或LaTeX文档中,必须按照学术规范正确引用所有参考文献。
- 忽略或不规范的引用可能导致学术不端行为。
- 出版规范:
- 转录后的文档应遵守相关的出版规范,包括格式、署名、版权声明等。
- 同行评审:
- 如果转录的内容涉及同行评审的研究,需要确保不违反评审过程的保密性。
应对措施
为避免上述隐患,可以采取以下措施:
- 获取授权:在转录前,确保获得版权持有者的许可。
- 正确引用:在文档中正确引用所有来源,遵守学术引用规范。
- 尊重版权:对于版权保护的内容,仅用于个人学习和研究,不进行商业用途或公开传播。
- 透明度:在文档中明确指出内容的来源和转录的意图,保持学术透明度。
- 遵守法律:了解并遵守相关的知识产权法律和学术规范。
安装
!pip install pix2text
!pip install pymupdf
该安装包还依赖 pytorch (pip install pytorch), opencv (pip install opencv-python)
环境准备
- c++ redistributable 比 2019 更新的版本。
- python 首次调用 pix2text, 程序会自动安装 pix2text 源文件,某些地区的 github 可能会不稳定,可以下载文末连接文件在对应目录存放即可。
代码案例
将 .pdf 拆成若干 .jpg 文件, 再逐一文件进行 .tex 转化, 最后输出 .txt 文件
import os
import fitz
from pix2text import Pix2Text
def pdf_to_jpg(pdf_path, output_folder):
# 确保输出目录存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 打开PDF文件
pdf_document = fitz.open(pdf_path)
# 遍历PDF的每一页
for page_number in range(len(pdf_document)):
# 打开PDF页面
page = pdf_document[page_number]
# 将PDF页面渲染为图像
pix = page.get_pixmap()
# 定义输出JPG文件的路径
output_path = f"{output_folder}/page_{page_number + 1}.jpg"
# 保存图像
pix.save(output_path)
print(f"Page {page_number + 1} saved as JPG.")
return(len(pdf_document))
# 关闭PDF文件
pdf_document.close()
def convertjpgtotext(output_folder,num):
for page_number in range(num):
img_fp = f"{output_folder}/page_{page_number+1}.jpg"
p2t=Pix2Text.from_config()
outs = p2t.recognize_text_formula(img_fp, resized_shape=768, return_text=True)
with open('output.txt', 'a', encoding='utf-8') as file:
file.write(outs)
# 使用示例
pdf_file_path = 'example.pdf' # 你的PDF文件路径
output_directory = 'output_jpgs' # 输出JPG文件的目录
num=pdf_to_jpg(pdf_file_path, output_directory)
convertjpgtotext(output_directory,num)
此外目前大陆线上的大语言模型普遍具有这个功能,但是由于计算资源较大经常无响应, 可以采用上述代码在本地进行逆转换。
https://115cdn.com/s/swhgs363ndk?password=xaf8&#
pix2text.rar
访问码:xaf8