这里写目录标题

  • 摘要
  • 原文件
  • 预处理为txt
  • 代码实现

摘要

当遇到一些需要大量数据的项目,数据的读取与储存显得尤为重要。怎样把数据从其他格式的文件中读取,并运用到程序中是很多时候我们要解决的问题。对于平常的.txt,和.xlsx文件,MATLAB有对应的函数帮助读取,但是遇到pdf文件时MATLAB很难读取内容。本文以一个操作实例提供了一个从pdf文件中读取数据的方法。

原文件

在本文中pdf原文件部分页面如下:


这里的任务是读取目录中的部件名称,其对应的页面,以及某一页中零件的名称,其对应的件号。

预处理为txt

直接读取pdf对MATLAB来说颇为困难,所以我们将pdf手工转为有规律的txt文件。如下图所示:

可以看到我们都是以一行一行的方式列出信息,这有助于matlab中txt操作函数的执行。
还有个小细节就是每隔一定的内容就会以“!”为分界,这有助于MATLAB识别到某一部分已经读完,可以换行了。

代码实现

代码如下:
目录读取函数

function partnp=fun_getnamepagenum(filename)
fid = fopen(filename,'rt');%read text, 'rt'n= 0; s(find(isspace(s))) = [] %去除所有空格
m=0;
while ~feof(fid)  % file operation, end of filestr = fgetl(fid);str(isspace(str)) = []; %去除所有空格if isempty(str)breakendif  str(1)=='!'m=m+1;n=0;continue    endt=find(str=='.');%if isempty(t)breakendif ~isempty(strfind(str,'0.2'))partnp{2*m,n+1}=str(1:t(2)-1);elsepartnp{2*m,n+1}=str(1:t(1)-1);endif str(end-1)=='-'partnp{2*m-1,n+1}=str2num(str(end));elsepartnp{2*m-1,n+1}=str2num(str(end-1:end));     endn=n+1;
endfclose(fid);

页面读取函数:

function  cpfind= fun_getnameidx( filename )
fid = fopen(filename,'rt');%read text, 'rt'
n= 0;%文件行数,
m=0;%第几个小零件
while ~feof(fid)  % file operation, end of filestr = fgetl(fid);%读取行 if isempty(str)break       endif str(1)=='!'if n~=0for i=1:0.5*ncpfind{m-2,i}= cpfind{m-2,0.5*n+i};cpfind{m-2,0.5*n+i}=[];endendif length(str)==1;breakendif length(str)==2m=str2num(str(2));elsem=str2num(str(2:3));endn=0;        endif str(1)~='!'str(isspace(str)) = []; %去除所有空格t=find(str=='.');if isempty(t)cpfind{m-1,n+1}=str;elseif t(1)==2&&(str(1)=='0'||str(1)=='1')cpfind{m-2,n+1}=str(1:t(2)-1);elseif t(1)==1&&str(2)=='0'cpfind{m-2,n+1}=str(2:t(3)-1);elseif t(1)==1&&t(2)>2cpfind{m-2,n+1}=str(2:t(2)-1);        elseif t(1)==1&&t(2)==2&&t(3)>3cpfind{m-2,n+1}=str(3:t(3)-1);    elseif t(1)==1&&t(2)==2&&t(3)==3cpfind{m-2,n+1}=str(4:t(4)-1);  elseif t(1)==1&&t(2)==2&&t(3)==3&&t(4)==4cpfind{m-2,n+1}=str(5:t(5)-1);  else     cpfind{m-2,n+1}=str(1:t(1)-1);endn=n+1;end
endfclose(fid);
end

使用时只用在脚本文件中输入填入文件名的函数即可。
结果如下:

MATLAB下pdf文件操作读取示例相关推荐

  1. java操作office和pdf文件java读取word,excel和pdf文档内容

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  2. python 读取pdf cid_python使用pdfminer解析pdf文件的方法示例

    最近要做个从 pdf 文件中抽取文本内容的工具,大概查了一下 python 里可以使用 pdfminer 来实现.下面就看看怎样使用吧. PDFMiner是一个可以从PDF文档中提取信息的工具.与其他 ...

  3. matlab处理记事本数据库,如何从Matlab的记事本文件中读取大块数据?

    如何从Matlab的记事本文件中读取大块数据? 我的数据采用以下格式: TABLE NUMBER 1 FILE: name_1 name_2 TIME name_3 day name_4 -0.01 ...

  4. SpringBoot打开resources目录下的文件操作

    SpringBoot打开resources目录下的文件操作 背景 我想在SpringBoot项目中放入一个静态文件.json文件.然后在SpringBoot项目内可以打开并读取此json文件. [外链 ...

  5. matlab从csv文件中读取时间转换异常

    matlab 从 csv 文件中读取时间转换异常 最近一段时间一直在研究 matlab 读取各种数据,自以为文件读取的水平还行.可是,昨天,帮朋友读取一个 csv 文件时,时间转换却让我感到非常奇怪. ...

  6. VC之PDF文件操作

    PDF文件是我们常用的文件,本文简单介绍下PDF文件的操作. 首先,我们需要PDF的库文件--PDFLib 在网上搜索,就可下载   然后,新建对话框应用程序,将库文件拷贝到我们的工程中,并且添加到工 ...

  7. Linux下对文件操作时出现乱码怎么办?

    Linux下对文件操作经常会遇见乱码问题,我在网上搜了一些解决方法,希望能对大家有所帮助. 如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中 ...

  8. php遍历文件夹下文件内容_php遍历文件夹下所有文件的代码示例

    本篇文章给大家带来的内容是关于php遍历文件夹下所有文件的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 不论是面试还是正常工作需要都会用到遍历文件夹下的所有文件,今天就记录 ...

  9. linux下怎么批量命名文件,linux下的文件操作——批量重命名

    概述:在日常工作中,我们经常需要对一批文件进行重命名操作,例如将所有的jpg文件改成bnp,将名字中的1改成one,等等.文本主要为你讲解如何实现这些操作 1.删除所有的 .bak 后缀: renam ...

最新文章

  1. 【Teradata】grouping和rollup窗口函数
  2. bLue的二叉树_JAVA
  3. centos 日志切割_centos自带的日志切割工具 --- logrotate
  4. ios开发 多人语音聊天_手游语音市场的现状、机遇与挑战
  5. Asp.net Core 添加 EF 工具并执行初始迁移错误解决方法(Add-Migration Initial---Build failed.)
  6. 船舶照明行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. 排序算法——直接选择排序
  8. brew切换到清华源
  9. 高斯消去法,列主元法,LU分解法python程序
  10. i5 8300 JAVA开发_八代标压i5-8300H和i7-8750H,哪个更值得入手?
  11. 中债估值 收益率_收债
  12. Tensorflow之搭建神经网络八股
  13. codeforces 1553B Reverse String
  14. 华为在鸿蒙的另一张王牌,麒麟芯成绝唱后,华为终于还是,甩出了另外一张王牌...
  15. 语法分析-自上而下分析 知识总结
  16. PicGo配置(gitee)
  17. iOS关于时间的处理
  18. 贵大计算机学院张达敏,贵大计算机研究生怎么样?
  19. 计算机组装后 无法开机原因,电脑组装完毕之后点不亮怎么办?新电脑组装好开不了机的解决办法...
  20. arcgis如何做lisa集聚图_GeoDa 制作北京LISA集聚图,显示错误,如图,怎样处理?...

热门文章

  1. Vue 实例之数据绑定,事件,组件,生命周期!!!
  2. 什么是COM,如何使用COM
  3. 学生会部门职位竞选PPT模板
  4. 年底跳槽!工资翻 3 倍!
  5. 兆骑科创高层次人才引进服务平台,创业大赛,云路演
  6. 自定义布局Dialog 自定义dialog右上角带叉号的dialog 点击右上角叉号关闭dialog
  7. Focusky教程 | 软件免费注册登录
  8. 2019全国计算机大赛二等奖,喜讯!这次是2019年TI杯全国大学生电子设计竞赛全国二等奖...
  9. 天津理工大学c语言实验报告8,天津理工大学-c语言上机报告4.doc
  10. 【Unity项目优化宝典】Unity3d打包后移动端启动黑屏时间太久