免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1861 | 回复: 4

【请教】PDF转TXT的问题,要高效。 [复制链接]

论坛徽章:
0
发表于 2012-08-31 14:48 |显示全部楼层
本帖最后由 justqb 于 2012-09-03 10:43 编辑

有大概200g,50w个 PDF文件要处理。
主要是从里面提取一下需要的信息。
我的思路是把PDF转成TXT,然后用正则处理。

我的代码:
  1. #!perl -w
  2. use strict;
  3. use 5.010;
  4. use CAM::PDF;

  5. open TST ,">tst.txt";

  6. my ($dir, $subdir, @files, $file)= ("tst" , "" );
  7. my ($pdf, $pagecount, $text1,);

  8. opendir DIR , $dir;#打开文件夹tst
  9. @files = grep {/pdf$/} readdir DIR;#读取文件,
  10. foreach $file (@files){
  11.         say "$dir/$file";
  12.         eval {$pdf = CAM::PDF->new("$dir/$file")};#有时候PDF本身就是损坏的,这句可能导致程序崩溃,就加了eval。
  13.         $pagecount = eval {$pdf->numPages()};#同上
  14.         say "^^$dir/$file" unless $pagecount;#
  15.         say "    $pagecount";
  16.         next unless $pagecount =~ m{^\d+$};
  17.         $text1 = join "-----\n" , map {$pdf->getPageText($_)} (1..$pagecount);
  18.         #$text1 = $pdf->toString();
  19.         say TST $text1; #调试中,都写到一个文件中了。
  20. }
复制代码
测试的文件夹里有23个文件,一共8m多一点,这个程序运行了2min才结束。看任务管理器,一般都要200m+内存,cpu一直保持在25%(4核cpu,酷睿8200,2.3g的)
这样的话,需要 200g * 1024m / 8m * 2min / 60 min / 24h = 35天才能转完。
小弟英语不怎么样,pdf转txt只找到这一个模块。而且这个程序是单线程,如果能用多线程,可能速度也会快个三四倍(感觉程序的瓶颈在cpu上,多线程会效率高点)。
也试过了一些单独的转化程序,不过转的有问题,没这个模块好。(比如双栏的pdf,带页眉页脚,这个模块转出来的顺序是页眉,左栏,右栏,页脚。其他程序转出来,就是页眉,左右栏不分(左边和右边在同一行,下行继续这样),页脚)。


希望大侠们提供高效模块的信息,能多线程并发就更好了。谢谢!

论坛徽章:
0
发表于 2012-08-31 23:42 |显示全部楼层
这个中文乱码能解决不?  

论坛徽章:
0
发表于 2012-09-03 10:42 |显示全部楼层
我的文件里都没中文。

论坛徽章:
0
发表于 2012-11-15 09:41 |显示全部楼层
这个问题很实际啊!

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
发表于 2012-11-15 11:48 |显示全部楼层
多开几个进程同时转呗。
你的单进程都25%了,
那也就能开4~5个进程一起跑吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP