2013-06-19 36 views
9

Tôi có một tệp PDF được tạo bởi bên thứ ba. Tôi đang cố gắng để có được văn bản ra khỏi nó, nhưng không phải pdf2text cũng không sao chép và dán kết quả trong văn bản có thể đọc được. Sau một chút đào ở đầu ra (của một trong hai) tôi thấy rằng mỗi nhân vật trên màn hình được tạo thành từ ba byte. Ví dụ: "A" là các byte ef, 8181. Nhìn vào siêu dữ liệu trên PDF mà nó tuyên bố được mã hóa trong Identity-H, vì vậy tôi cho rằng những gì tôi thấy là một tập hợp các ký tự được mã hóa trong Identity-H. Tôi có một ánh xạ một phần dựa trên các tài liệu tôi đã có, nhưng tôi muốn tạo một bản đồ hoàn chỉnh hơn. Để làm điều đó tôi cần một cái gì đó giống như một bảng ASCII cho Identity-H.Tôi có thể ánh xạ các ký tự mã hóa Identity-H tới các ký tự ASCII hoặc Unicode ở đâu?

+1

Không phải là giải pháp ngay lập tức mà hãy xem các tài liệu CID (Identity-H) http://partners.adobe.com/public/developer/en/font/5092.CID_Overview.pdf và http: // www. adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5014.CIDFont_Spec.pdf – borrible

+1

Nếu bạn có tệp PDF có phông chữ sử dụng danh tính-h, bạn bắt buộc phải sử dụng bản đồ **/ToUnicode ** trong PDF để trích xuất văn bản. Cf. Mục 9.10.2 Ánh xạ các mã ký tự cho các giá trị Unicode của ISO 32000-1: 2008. – mkl

+0

Xin chào, hãy xem câu hỏi của tôi về http://stackoverflow.com/questions/22431215/read-japanese-characters-tin-a-pdf-file/22489010#22489010 – TacB0sS

Trả lời

6

Không phải lúc nào cũng có thể trích xuất văn bản từ PDF, đặc biệt khi bản đồ/ToUnicode bị thiếu như được chỉ ra bởi mkl.

Nếu không thể cắt và dán văn bản chính xác từ Acrobat thì bạn sẽ có rất ít cơ hội tự giải nén văn bản. Nếu Acrobat không thể giải nén nó thì rất khó có bất kỳ công cụ nào khác có thể trích xuất văn bản một cách chính xác.

Nếu bạn tạo bảng mã hóa theo cách thủ công thì bạn có thể sử dụng điều này để remap các ký tự được trích xuất với giá trị chính xác nhưng điều này rất có thể sẽ chỉ hoạt động cho một tài liệu này.

Thường thì việc này được thực hiện đúng mục đích. Tôi đã thấy các tài liệu ngẫu nhiên remap ký tự khác nhau cho mỗi phông chữ trong dấu chấm. Nó được sử dụng như một hình thức obfuscation và cách duy nhất thực sự để trích xuất văn bản từ các PDF là để nghỉ mát để OCR. Có nhiều báo cáo tài chính sử dụng loại lừa này để ngăn mọi người trích xuất dữ liệu của họ.

Ngoài ra, Identity-H chỉ là ánh xạ ký tự 1: 1 cho tất cả các ký tự từ 0x0000 đến 0xFFFF. I E. Danh tính là bản đồ nhận dạng.

Vấn đề thực sự của bạn là mục nhập thiếu/ToUnicode trong tệp PDF này. Tôi nghi ngờ đó cũng là một CMap nhúng trong PDF của bạn giải thích tại sao có thể có 3 byte cho mỗi ký tự.

+1

Vì vậy, về cơ bản tôi phải làm những gì tôi đã có đã hoàn thành: tự tạo bản đồ. May mắn là tất cả các tệp PDF mà đại lý này đang sản xuất dường như sử dụng cùng một thiết lập, vì vậy tôi nghi ngờ đó là cố ý (hoặc nếu có, chúng không tốt lắm khi bị che khuất). –