Hướng dẫn xử lý dữ liệu phi cấu trúc trích xuất và làm sạch văn bản

Đỗ Minh Đức Đỗ Minh Đức
Chia sẻ bài viết

Dữ liệu phi cấu trúc ngày càng chiếm tỷ trọng lớn trong doanh nghiệp, đặc biệt là các file PDF, DOCX hay HTML. Tuy nhiên, việc trích xuất và làm sạch văn bản từ những nguồn này không đơn giản nếu thiếu quy trình. Bài viết dưới đây Bizfly sẽ hướng dẫn bạn từng bước để khai thác dữ liệu phi cấu trúc hiệu quả, phục vụ cho phân tích và ứng dụng AI.

Dữ liệu phi cấu trúc là gì?

Khác với dữ liệu có cấu trúc (structured data) như trong database SQL (các bảng có cột, kiểu dữ liệu cố định), dữ liệu phi cấu trúc (unstructured data) không có khuôn mẫu rõ ràng, thường ở dạng văn bản, hình ảnh, âm thanh, video. Dưới góc nhìn của Developer, nhóm dữ liệu này có những đặc thù như sau:

  • PDF: Các hợp đồng ký kết, báo cáo tài chính, tài liệu nghiên cứu học thuật. Chúng có thể chứa chữ, bảng, hình ảnh hoặc sơ đồ đan xen, khiến việc trích xuất dữ liệu không đơn giản.
  • DOCX: File Word được dùng phổ biến trong doanh nghiệp, có thể chứa đoạn văn, tiêu đề, bảng biểu, hình ảnh minh họa và chú thích.
  • HTML: Nội dung từ website hoặc blog. Bên cạnh phần văn bản chính, file HTML còn có rất nhiều thẻ và đoạn mã không cần thiết cho phân tích như menu, quảng cáo, script.
Structured data không có khuôn mẫu rõ ràng, thường ở dạng văn bản

Điểm chung của các dạng dữ liệu này là không thể đem phân tích ngay lập tức. Trước khi sử dụng cho báo cáo, nghiên cứu hay các ứng dụng AI, chúng cần được trích xuất nội dung, loại bỏ phần thừa và chuẩn hóa thành văn bản sạch. Đây chính là lý do tại sao xử lý dữ liệu phi cấu trúc được xem là bước khởi đầu quan trọng trong mọi quy trình khai thác dữ liệu hiện đại.

Lý do cần xử lý dữ liệu phi cấu trúc

  • Tối ưu phân tích dữ liệu: Làm sạch văn bản giúp mô hình AI/ML hiểu chính xác ngữ cảnh.
  • Hỗ trợ ra quyết định: Doanh nghiệp có thể trích xuất insight từ báo cáo PDF, hợp đồng, phản hồi khách hàng.
  • Tăng hiệu quả vận hành: Giảm thời gian nhập liệu thủ công, tự động hóa quy trình đọc dữ liệu.
  • Nâng cao chất lượng dữ liệu: Văn bản được chuẩn hóa, loại bỏ “rác” trước khi đưa vào hệ thống phân tích.

Hướng dẫn trích xuất dữ liệu từ PDF, DOCX, HTML

Trích xuất dữ liệu từ PDF

Công cụ phổ biến:

1. Python: PyPDF2, pdfplumber – hỗ trợ đọc text theo trang.

import pdfplumber

with pdfplumber.open("sample.pdf") as pdf:
    text = ""
    for page in pdf.pages:
        text += page.extract_text()
print(text)

2. OCR (Optical Character Recognition): Tesseract OCR dùng khi PDF là ảnh scan.

tesseract input.pdf output.txt -l vie

Lưu ý khi xử lý PDF:

  • PDF có thể chứa nhiều lớp dữ liệu (text, hình, vector).
  • Một số PDF bảo mật hoặc bị mã hóa cần giải mã trước khi trích xuất.

Trích xuất dữ liệu từ DOCX (Word)

Thư viện đề xuất: python-docx để đọc toàn bộ nội dung, tách tiêu đề (heading), đoạn văn và bảng.

from docx import Document
doc = Document("sample.docx")
text = "\n".join([p.text for p in doc.paragraphs])
print(text)

Ứng dụng thực tế:

  • Đọc báo cáo Word, lấy dữ liệu bảng thống kê để đưa vào phân tích.
  • Tách từng đoạn để phục vụ xử lý ngôn ngữ tự nhiên (NLP).

Trích xuất dữ liệu từ HTML (Website)

Công cụ phổ biến:

1. BeautifulSoup (Python)

from bs4 import BeautifulSoup
import requests

html = requests.get("https://example.com").text
soup = BeautifulSoup(html, "html.parser")
text = " ".join([p.get_text() for p in soup.find_all("p")])
print(text)

2. Cheerio (Node.js)

const cheerio = require('cheerio');
const axios = require('axios');

const { data } = await axios.get("https://example.com");
const $ = cheerio.load(data);
const text = $("p").map((i, el) => $(el).text()).get().join(" ");
console.log(text);

Quy trình:

  • Loại bỏ thẻ HTML như thẻ script, style để tránh dữ liệu thừa.
  • Chỉ giữ nội dung chính từ thẻ p, h1-h6, div hoặc thẻ sản phẩm.

Ứng dụng thực tế:

  • Thu thập mô tả sản phẩm từ website TMĐT.
  • Tách dữ liệu từ blog để phân tích nội dung.

Pipeline làm sạch dữ liệu cho Dev

Sau khi trích xuất nội dung từ PDF, DOCX hoặc HTML, dữ liệu thô thường chứa rất nhiều ký tự rác, khoảng trắng và thông tin dư thừa. Để có thể sử dụng cho phân tích hoặc đưa vào hệ thống AI, cần tiến hành quy trình làm sạch và chuẩn hóa theo từng bước.

Bước 1 – Loại bỏ ký tự rác

Khi trích xuất từ file, thường xuất hiện các ký tự thừa như xuống dòng, tab, dấu lạ hoặc ký hiệu không mong muốn. Cách làm dùng Regex để lọc và giữ lại ký tự cần thiết (chữ, số, dấu câu). Từ đó kết quả: văn bản gọn gàng, không còn ký tự khó đọc.

import re
clean_text = re.sub(r"[^a-zA-Z0-9À-ỹ\s.,]", "", raw_text)

Bước 2 – Chuẩn hóa văn bản

Văn bản từ nhiều nguồn có thể không đồng nhất về định dạng.

  • Chuyển toàn bộ về chữ thường (lowercase) để dễ phân tích.
  • Chuẩn hóa Unicode UTF-8 để tránh lỗi font khi xử lý tiếng Việt.

Ví dụ: “Khách HÀNG” → “khách hàng”.

Bước 3 – Tiền xử lý ngôn ngữ (NLP Preprocessing)

Đây là bước quan trọng để chuẩn bị dữ liệu cho phân tích ngôn ngữ.

  • Tokenization: Tách văn bản thành từ/câu. Python có nltk.word_tokenize hoặc underthesea cho tiếng Việt.
  • Stopwords Removal: Loại bỏ từ không mang nhiều ý nghĩa như “và”, “nhưng”, “là”.
  • Lemmatization/Stemming: Đưa từ về dạng gốc, giúp gom các biến thể lại.

Ví dụ: “chạy”, “chạy nhanh”, “chạy bộ” → “chạy”.

Bước 4 – Loại bỏ thẻ HTML hoặc metadata

Khi xử lý file HTML hoặc dữ liệu từ web, ngoài nội dung chính còn có nhiều đoạn mã không cần thiết. Cách làm là chỉ giữ lại text, loại bỏ toàn bộ thẻ div, script, style.

Kết quả: chỉ còn nội dung thuần văn bản, dễ đọc và phân tích.

from bs4 import BeautifulSoup
text_only = BeautifulSoup(html, "lxml").get_text()

Bước 5 – Xuất và lưu trữ dữ liệu sạch

Sau khi xử lý xong, cần lưu dữ liệu lại dưới dạng chuẩn để dễ tái sử dụng.

  • Xuất ra file CSV hoặc JSON để nhập vào hệ thống phân tích.
  • Nếu cần tìm kiếm toàn văn bản (full-text search), có thể đưa vào Elasticsearch hoặc MongoDB.

Ví dụ: thay vì mở từng PDF, bạn có thể tìm nhanh “khách hàng tiềm năng” trong hàng nghìn file.

Ứng dụng thực tiễn trong dự án hay gặp

  • Data Pipeline cho AI: Chuẩn hóa văn bản trước khi embedding vào vector DB.
  • ETL (Extract – Transform – Load): Crawl HTML → làm sạch → đưa vào warehouse (BigQuery, Snowflake).
  • Search Engine nội bộ: Trích xuất text từ hợp đồng PDF/DOCX → index với Elasticsearch.
  • Automation: Xây script tự động đọc PDF báo cáo hàng tháng, trích số liệu, push vào dashboard.

Kết luận

Đối với Developer, xử lý dữ liệu phi cấu trúc (PDF, DOCX, HTML) không chỉ là vấn đề đọc text, mà là cả một pipeline gồm: Extract → Clean → Normalize → Export. Sử dụng đúng thư viện và quy trình sẽ giúp tiết kiệm hàng giờ làm thủ công, đồng thời tạo nền tảng cho việc áp dụng AI/ML vào phân tích văn bản. Nếu đang xây dựng hệ thống khai thác dữ liệu hoặc trợ lý AI, đây là bước không thể bỏ qua.

Đỗ Minh Đức
Tác giả
Đỗ Minh Đức

Với gần 20 năm kinh nghiệm trong ngành công nghệ, Đỗ Minh Đức hiện là Giám đốc Sản phẩm Bizfly Martech tại VCCorp. Anh được biết đến là một trong bốn người đặt nền móng cho BizChatAI, giải pháp ứng dụng trí tuệ nhân tạo để chăm sóc khách hàng tự động đa kênh.

Anh tập trung phát triển BizChatAI như một "trợ lý ảo" cho doanh nghiệp, giúp tự động hóa việc tương tác và CSKH. Công nghệ này đang thay đổi mạnh mẽ cách doanh nghiệp tiếp cận khách hàng, từ việc gửi tin nhắn, quà tri ân tự động đến ứng dụng hiệu quả cho các chuỗi bán lẻ và nhà hàng... Qua các bài viết của mình, anh chia sẻ sâu hơn về những lợi ích và cách thức hoạt động của chatbot trong kinh doanh.

Giải pháp BizChatAI

Trợ lý AI giúp bạn bán hàng tự động, tư vấn như người thật và hỗ trợ đa ngôn ngữ chỉ trong vòng vài phút triển khai!