Hướng dẫn how do i extract specific data from a pdf in python? - làm cách nào để trích xuất dữ liệu cụ thể từ pdf trong python?

Adobe gây khó khăn khi làm điều này mà không cần đăng ký - nhưng điều này sẽ giúp

Ảnh của Imattsmart trên unplash

PDF, vì một số lý do, vẫn được sử dụng mọi lúc trong ngành và chúng thực sự khó chịu. Đặc biệt nếu bạn không trả tiền cho một số đăng ký nhất định để giúp bạn quản lý chúng. Bài viết này dành cho những người trong tình huống đó, những người cần lấy dữ liệu văn bản từ PDF mà không trả tiền cho nó.

Trước hết, nếu bạn đang tìm cách phân tích văn bản viết tay, đây là bài viết sai - nhưng nó sẽ sớm ra mắt.

Quá trình này sẽ bao gồm chuyển đổi PDF thành .txt và sau đó trích xuất dữ liệu thông qua Regex và các phương thức đơn giản khác.

Nếu bạn không đọc bài viết của tôi về việc tự động hóa bàn phím của bạn để chuyển đổi PDF thành .txt en masse, thì tôi khuyên bạn nên làm điều này trước. Nó sẽ giúp bạn tiết kiệm rất nhiều thời gian. Và nếu bạn không muốn nhấp vào, thì đây là tất cả các mã để làm điều đó.

Mã được viết bởi tác giả - có thể được tải xuống tại đây: https://gist.github.com/jasher4994

Chuyển đổi sang .txt và sau đó đọc giữa các dòng

Bây giờ bạn đã chuyển đổi thành các tệp .txt, tất cả những gì bạn phải làm là viết một số mã rút ra câu trả lời mà bạn muốn.

Khi được dịch sang các tệp .txt, đầu ra có thể xuất hiện một chút buồn cười. Đôi khi văn bản xung quanh một câu hỏi có thể ở trên hộp trả lời, và đôi khi nó có thể ở bên dưới. Tôi không chắc chắn nếu có một lý do kỹ thuật cho điều này hay nếu nó chỉ đơn giản là làm một cái gì đó như thế này khó khăn hơn.

Bí quyết là tìm kiếm các hằng số trong văn bản và cô lập chúng.

Dù bằng cách nào, có một giải pháp. Chúng tôi chỉ muốn câu trả lời và quan tâm rất ít đến các văn bản xung quanh họ. May mắn thay, khi được chuyển đổi thành các tệp .txt, tất cả các phần đầu vào của chúng tôi bắt đầu trên một dòng mới. Và như chúng ta biết, nếu có một yếu tố liên tục xung quanh tất cả những điều chúng ta đang cố gắng trích xuất khiến cuộc sống của chúng ta dễ dàng hơn rất nhiều.

Do đó, chúng ta có thể đọc tệp .txt của chúng ta vào python với open () và đọc (), sau đó sử dụng splitlines () trên nó. Điều này sẽ cung cấp một danh sách các chuỗi, với một thể hiện mới bắt đầu mỗi khi có một ký tự mới (\ n) trong chuỗi gốc.

import os
os.chdir(r"path/to/your/file/here")
f = open(r"filename.txt", "r")
f = f.read()
sentences = f.splitlines()

Như đã hứa, điều này sẽ cung cấp cho bạn một danh sách các chuỗi.

Nhưng, như đã đề cập, nó chỉ có các đầu vào người dùng mà chúng tôi quan tâm ở đây. May mắn thay, cũng có một yếu tố xác định khác để giúp chúng ta cô lập đầu vào. Tất cả các đầu vào, cũng như bắt đầu trên một dòng mới, cũng bắt đầu với một cặp dấu ngoặc. Những gì bên trong các giá đỡ này xác định loại đầu vào. Ví dụ, một phần văn bản sẽ là

(text)James Asher

và một hộp kiểm sẽ là

(checkbox)unchecked

Các ví dụ khác bao gồm các radiobuttons và các combobuttons, phần lớn các đầu vào pdf của bạn sẽ thuộc bốn loại này.

Tuy nhiên, đôi khi, sẽ có các phần hoặc câu ngẫu nhiên sẽ bắt đầu bằng dấu ngoặc để bạn có thể sử dụng bộ (câu) để kiểm tra kỹ. Trong ví dụ của tôi, chỉ có 5 loại câu hỏi khác nhau mà tôi muốn bao gồm vì vậy đã sử dụng danh sách hiểu biết sau để xóa mọi thứ khác.

questions = ["(text", "(button", "(:", "(combobox", "(radiobutton" ]sentences= [x for x in sentences if x.startswith(tuple(questions))]

Bây giờ bạn sẽ có một danh sách tất cả các đầu vào/câu trả lời cho câu hỏi của bạn. Miễn là bạn sử dụng cùng một PDF, cấu trúc của danh sách này sẽ không đổi.

Bây giờ chúng ta có thể chỉ cần chuyển nó vào một khung gấu dữ liệu, thực hiện một số thao tác và sau đó xuất nó vào bất kỳ định dạng nào chúng ta muốn.

Không phải tất cả các tệp .txt đầu ra như thế này từ PDFS, nhưng phần lớn thì có. Nếu bạn don thì bạn sẽ phải sử dụng Regex và tìm kiếm các hằng số trong tài liệu cụ thể của bạn. Nhưng một khi bạn viết mã để trích xuất nó từ một tài liệu, nó sẽ giống nhau cho tất cả các tài liệu của bạn miễn là chúng đồng nhất.

Trích xuất dữ liệu từ danh sách các chuỗi

Trích xuất văn bản là dễ dàng. Trong trường hợp này, tất cả những gì tôi cần làm là loại bỏ các dấu ngoặc trước. Điều đó có thể được thực hiện dễ dàng với một danh sách hiểu và một số regex.

list_strings = [re.sub(r"\([^()]*\)", "", x) for x in list_strings]
df = pd.DataFrame(list_strings)
df.to_excel("output.xlsx")

Và đầu ra là như dưới đây.

Đầu ra từ việc trích xuất dữ liệu PDF bằng Python

Sau đó, bạn có thể chỉ cần chạy một vòng lặp trên tất cả các tệp .txt của bạn và hợp nhất chúng cùng với gấu trúc. Sau đó, bạn có thể xoay vòng hoặc làm sạch như mong muốn.

Bây giờ bạn có một tệp Excel (hoặc CSV) có thể sử dụng lưu trữ tất cả dữ liệu của bạn từ tất cả các tệp PDF của bạn. Hầu như tất cả các mã này đều có thể sử dụng lại, bạn chỉ cần đảm bảo rằng nếu bạn thử nó với một loạt các tệp PDF khác nhau mà chúng được chuyển đổi thành bố cục tương tự khi được chuyển đổi thành các tệp .txt.

Hi vọng điêu nay co ich.

If I’ve inspired you to join medium I would be really grateful if you did it through this link — it will help to support me to write better content in the future.If you want to learn more about data science, become a certified data scientist, or land a job in data science, then checkout 365 data science through my affiliate link.

Nếu bạn thích điều này thì xin vui lòng kiểm tra một số bài viết khác của tôi.

Cheers,

James

Làm cách nào để trích xuất văn bản cụ thể từ PDF trong Python?

Bước 1: Nhập tất cả các thư viện.Bước 2: Chuyển đổi tệp PDF thành định dạng TXT và đọc dữ liệu.Bước 3: Sử dụng chức năng .Findall () của các biểu thức thông thường để trích xuất các từ khóa.Use “. findall()” function of regular expressions to extract keywords.

Làm cách nào để trích xuất dữ liệu cụ thể từ PDF?

Cách tiếp cận bản sao & dán là lựa chọn thực tế nhất khi xử lý một số lượng nhỏ các tài liệu PDF đơn giản ...
Mở từng tệp PDF ..
Lựa chọn một phần dữ liệu hoặc văn bản trên một trang hoặc bộ trang cụ thể ..
Sao chép thông tin đã chọn ..
Dán thông tin đã sao chép vào tệp tài liệu, XLS hoặc CSV ..

Làm thế nào để bạn cạo dữ liệu từ PDF trong Python?

Scrape dữ liệu PDF ở dạng phi cấu trúc..
Bước 1: Nhập dữ liệu PDF dưới dạng DataFrame.Giống như dữ liệu ở định dạng có cấu trúc, chúng tôi cũng sử dụng TB.....
Bước 2: Tạo một định danh hàng.....
Bước 3: Định hình lại dữ liệu (chuyển đổi dữ liệu từ dạng dài sang dạng rộng) ....
Bước 4: Tham gia dữ liệu ở phần bên trái với dữ liệu ở phần bên phải ..