如何编程序将pdf转换为txt(100分)

  • 主题发起人 主题发起人 lx378
  • 开始时间 开始时间
To 楼主,如果你有办法先将PDF文件转为TIFF的话,我也许有个变通的办法,你可以试试。。。。
 
尝试以下方法:
1,引用Acrobat提供的ActiveX控件pdf.ocx(7.x版本为AcroPDF.dll)。
2,安装Office2003中的Microsoft Document Imaging
3,将你要的PDF文件打印到Microsoft Office Document Image Writer(装了第2步的组件后才会有)
4,调用Office的COM组件,MODI.Document。来完成OCR的实别。

我测试了,可以差不多用吧。。。不花钱,应该知足了。。。。
 
doll_paul:谢谢你的帮助,我要处理的pdf文件是加密文本的,不用识别,而且要处理几千个文件,不可能一个个文件手工处理
 
谁叫你手工实别了?以上的办法是编程用OFFICE的OCR来实别!我晕了!
 
doll_paul:不好意思,我没理解好你的话.
 
如果是纯文字的,可以“另存为...”;
如果是扫描式的,那就。。。。难
 
难度真大,如果全都是自己写,不调用现有的软件的话。
想学习,继续关注...
 
1.Acrobat Reader有一个插件:Aerial2.0
安装后可以将pdf文件 "save as RTF"。
下载:http://www.ambia.com
2.然后rtf to txt:
用一个RichEdit控件,设置其属性:WordWrap:=false;Visible := false

with RichEdit1 do begin
Clear;
PlainText := false;
Lines.LoadFromFile('QandD.Rtf');
PlainText := true;
Lines.SaveToFile('QandD.Txt');
end;
 
有空自己也写一个,嘿嘿
 
可以看成是对SVG的解析 我现在也很头疼 你的问题只要考虑对字的识别 我这边还要研究怎么对图像进行分析
 
doll_paul 可否写个教程?谢谢!
500分!送出所有分!求Office2003中OCR模块使用
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3533938
 
To 冰力不足,写写到也无所谓。可是,Office的OCR实别效果一般,不过,如果只是自己用用,我个人认为,还是可以满足的。。。。。

你试过Offfice的OCR,可以满足你的要求?
 
谢谢doll_paul百忙回复赐教 我用Offfice的OCR识别英文就OK 主要是找不到清华的OCR 据说清华加密做得特好 很难破解 我google搜索了三天三夜 也找不到清华的OCR SDK
请问怎么和您联系?
我的QQ是 55423726 EMAIL: 55423726@qq.com
 
应该是你没有设置字符集吧。我没有细查,你试一下。
自动选择 0x800
英语 9
简体中文 0x804
 
谢谢doll_paul 可否写个教程出来 或者把简单的识别代码发一份给我 感激不尽!
 
To 冰力不足,本来是打算如你所愿写一下的。可是,我简单的Google一下,却发现,资料多多。。。不知道是你不认真,还是我运气好。所以,我就懒了。给你一个URL吧。呵呵。有问题再联系。另外,加你QQ了。你不理人。

http://www.delphibbs.com/delphibbs/dispq.asp?lid=2906034
 
To 冰力不足,还是给你写几行吧。上面的URL是以接口的形式调用的。你需要导入类库。如果你和我一样懒,那么,就用古老,又不过时的。OLE吧。哈哈。代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
Temp_MSOCR: OleVariant;
str: string;
begin
OpenDialog1.Execute;
if OpenDialog1.FileName = '' then
begin
ShowMessage('请先选择一个TIFF文件!');
Exit;
end;

try
Temp_MSOCR := CreateOleObject('MODI.Document');
except
ShowMessage('请安装Office组件!');
end;

try
Temp_MSOCR.Create(OpenDialog1.FileName);
//第一次打开会出错,原因请高手指点
except
Temp_MSOCR.Create(OpenDialog1.FileName);
end;
Temp_MSOCR.OCR($804); //简体中文

for i := 0 to Temp_MSOCR.Images.Count - 1 do
Memo1.Lines.Add(Temp_MSOCR.Images.Item.Layout.Text);

Temp_MSOCR.Close;
Temp_MSOCR := UnAssigned;
end;
 
谢谢doll_paul 没有收到QQ消息 或许您把QQ告诉我 让我加您
 
忘记写注解了~~~

也就这行要说说,上面的URL,好像也说到了。
Temp_MSOCR.OCR($804, false, false); //简体中文
进行OCR识别,参数:语言ID,是否自动旋转,是否自动拉伸
 
啊~~~~~~~~~这么晚不睡觉!!厉害!!!

19225。加我吧!
 
后退
顶部