Trích xuất văn bản từ PDF: lớp văn bản và OCR
Có PDF cho lấy văn bản ra chỉ trong một giây, có PDF chỉ chứa ảnh của các trang và cần OCR. Hướng dẫn này giải thích văn bản được lưu trong PDF như thế nào, vì sao văn bản trích xuất có thể bị lỗi ký tự hoặc sai thứ tự, OCR đọc trang quét ra sao và điều gì ảnh hưởng đến độ chính xác, cũng như cần kiểm tra gì trước khi dùng kết quả.
Hai loại trang PDF
Một trang PDF có thể chứa văn bản theo hai cách. Phần lớn PDF xuất từ trình soạn thảo, trình duyệt hay phần mềm thiết kế có lớp văn bản: mỗi ký tự được lưu dưới dạng mã trong một phông chữ và đặt tại một vị trí trên trang. Trang được quét hoặc chụp ảnh thì khác. Đó là một bức ảnh duy nhất của cả trang, và với phần mềm, chữ trên đó chỉ là điểm ảnh.
| Loại trang | Cách tạo ra | Kết quả trích xuất |
|---|---|---|
| PDF văn bản | Xuất hoặc in ra PDF từ một ứng dụng | Các ký tự đã lưu, thường giữ nguyên chính xác |
| PDF quét | Máy quét, camera điện thoại hoặc fax | Không có gì cho đến khi OCR đọc ảnh |
| Bản quét có thể tìm kiếm | Bản quét được thêm lớp văn bản OCR về sau | Kết quả OCR lúc đó, kèm các lỗi của nó |
| Chữ đã chuyển thành đường nét | Chữ được đổi thành hình trong phần mềm thiết kế | Không có ký tự; chỉ OCR mới đọc được |
Trình xem PDF thường cho biết trang thuộc loại nào. Nếu bạn chọn được một từ riêng lẻ hoặc tìm thấy nó bằng ô tìm kiếm, trang đó có lớp văn bản. Nếu kéo chuột thì cả trang được chọn như một khối, hoặc tìm kiếm không thấy gì, trang đó là ảnh. Một tệp có thể có cả hai, chẳng hạn báo cáo đánh máy kèm phụ lục được quét.
Cách trích xuất lớp văn bản
PDF không lưu đoạn văn. Nó lưu các mẩu ký tự, mỗi mẩu có phông chữ và vị trí, thường mỗi lần một từ hoặc vài chữ cái, theo thứ tự do chương trình tạo tệp quyết định. Công cụ trích xuất đọc các mẩu này rồi dựng lại các dòng dựa trên vị trí của chúng.
Công cụ PDF sang văn bản của LeedyBox đọc các mẩu bằng PDF.js, bộ máy PDF của Firefox. Công cụ bắt đầu dòng mới khi vị trí theo chiều dọc thay đổi hơn 5 point (khoảng 1,8 mm), còn không thì nối các mẩu bằng một khoảng trắng; mỗi trang trong kết quả bắt đầu bằng một dấu như --- Trang 1 ---. Phần lớn tài liệu một cột cho kết quả dễ đọc, kèm vài tác dụng phụ:
- Một từ được lưu thành nhiều mẩu, chẳng hạn do giãn chữ, có thể xuất hiện với khoảng trắng ở giữa.
- Cột, khung bên và chú thích ảnh xuất hiện theo thứ tự được lưu, thứ tự này có thể khác với thứ tự đọc.
- Chỉ số trên, số chú thích và chữ đặt cao hơn hoặc thấp hơn dòng có thể thành một dòng riêng.
- Đầu trang, chân trang và số trang cũng nằm trong văn bản của mỗi trang.
Vì sao văn bản trích xuất có thể bị lỗi ký tự
Bên trong PDF, văn bản được lưu dưới dạng mã glyph của phông chữ chứ không phải ký tự Unicode. Để đổi mã trở lại thành chữ, tệp cần một bảng tương ứng. PDF được tạo cẩn thận có bảng ToUnicode cho từng phông, và phông dùng bảng mã chuẩn vẫn giải mã được khi không có bảng này. Vấn đề nảy sinh khi phông được nhúng dưới dạng tập con với cách đánh số riêng mà không có bảng tương ứng: ra khỏi tệp, các mã không còn ý nghĩa, nên kết quả trích xuất là chữ sai, ký hiệu lạ hoặc ô vuông trống dù trang hiển thị bình thường. Các tệp PDF tiếng Việt tạo từ phông cũ dùng bảng mã TCVN3 hoặc VNI cũng thường cho ra chữ sai vì những bảng mã đó không phải Unicode.
Phông chữ Trung, Nhật và Hàn thường dùng bảng ánh xạ ký tự định sẵn (CMap) như Adobe-Japan1 hay Adobe-Korea1 thay cho bảng riêng. Công cụ LeedyBox tải các CMap này cùng PDF.js, nhờ đó đọc đúng nhiều tài liệu Đông Á mà các công cụ đơn giản hơn làm hỏng. Các nguyên nhân thường gặp khác là chữ ghép như fi được lưu thành một glyph, phông Type 3 có chữ được vẽ như hình và thường không có bảng tương ứng, và PDF bị cố ý xáo trộn bảng mã để khó sao chép.
Khi trang có lớp văn bản, công cụ dùng lớp đó, kể cả khi văn bản bị lỗi, và không chạy OCR cho trang ấy. Để đọc trang như vậy bằng OCR, hãy chuyển trang thành ảnh bằng PDF sang JPG rồi đọc ảnh bằng Ảnh sang văn bản (OCR).
Khi nào công cụ LeedyBox dùng OCR
Công cụ quyết định cho từng trang. Nếu lớp văn bản của một trang có ít hơn 15 ký tự, trang đó được vẽ thành ảnh với kích thước gấp đôi bình thường, khoảng 144 điểm ảnh mỗi inch, rồi được Tesseract.js đọc bằng ngôn ngữ chọn ở "Ngôn ngữ OCR" cùng với tiếng Anh. Vì vậy, trong tài liệu có cả trang đánh máy lẫn trang quét, trang đánh máy được đọc chính xác và chỉ các trang quét đi qua OCR.
Trang quét chỉ có vài ký tự từ con dấu hoặc số trang vẫn được coi là trống và đi qua OCR. Ngược lại, bản quét đã có lớp văn bản từ 15 ký tự trở lên thì không, nên lớp OCR kém chất lượng do máy quét thêm vào sẽ được xuất ra nguyên như vậy. Bộ máy OCR và dữ liệu ngôn ngữ được tải từ leedybox.com ở lần chạy OCR đầu tiên, vì thế trang quét đầu tiên mất nhiều thời gian hơn. Tệp PDF của bạn được đọc trong trình duyệt và không bị tải lên.
OCR biến điểm ảnh thành chữ như thế nào
OCR làm việc theo từng bước. Trước hết, bộ máy chuyển ảnh sang đen trắng và tìm các khối văn bản, dòng và từ, bước này gọi là phân đoạn trang. Sau đó, một mạng nơ-ron được huấn luyện cho từng ngôn ngữ hoặc hệ chữ đọc mỗi dòng và chọn chuỗi ký tự có khả năng nhất, với sự hỗ trợ của danh sách từ của ngôn ngữ đó. Kết quả là phỏng đoán chứ không phải bản sao: các hình gần giống nhau như 0 và O, 1, l và I, hay rn và m có thể bị nhầm, và từ không có trong dữ liệu ngôn ngữ dễ bị đọc sai hơn.
Lựa chọn ngôn ngữ quan trọng hơn mọi tùy chọn khác. Mô hình huấn luyện cho chữ Latinh không đọc được tiếng Thái hay tiếng Nhật, và văn bản bằng ngôn ngữ không được chọn thường ra ký tự sai. Với tiếng Việt, việc chọn đúng ngôn ngữ còn giúp nhận dạng các dấu thanh. Mọi lựa chọn trong công cụ LeedyBox, trừ "Chỉ tiếng Anh", đều kết hợp ngôn ngữ đã chọn với tiếng Anh, điều này giúp ích cho tài liệu song ngữ, chẳng hạn hợp đồng tiếng Việt có tên sản phẩm bằng tiếng Anh.
Điều gì ảnh hưởng đến độ chính xác của OCR
| Yếu tố | Ảnh hưởng | Cách cải thiện |
|---|---|---|
| Độ phân giải | Chữ nhỏ mất các chi tiết giúp phân biệt các chữ cái, nhất là dấu thanh | Quét ở 300 DPI trở lên; cao hơn với chữ nhỏ |
| Nghiêng và cong | Dòng bị nghiêng và trang sách cong làm khó việc tìm dòng | Quét phẳng và thẳng; chụp từ ngay phía trên |
| Độ tương phản và nhiễu | Nền xám, vết bẩn, chữ mặt sau in hằn và nhiễu JPEG trông như nét chữ | Bản quét sạch, chữ đậm trên nền trắng |
| Phông chữ | Phông trang trí, quá mảnh hoặc quá đậm dễ bị đọc sai hơn | Kiểm tra kết quả cẩn thận |
| Chữ viết tay | Tesseract được huấn luyện bằng chữ in | Khó có kết quả tốt; nên gõ lại |
| Chữ viết dọc | Tiếng Nhật hoặc tiếng Trung viết dọc thường bị đọc sai | Kiểm tra cẩn thận hoặc gõ lại |
Vì công cụ vẽ trang ở khoảng 144 điểm ảnh mỗi inch, chữ nhỏ như chú thích cuối trang hay phần chữ nhỏ trong hợp đồng có thể khó đọc ngay cả với bản quét tốt. Với những trang này, PDF sang JPG tạo ảnh có độ phân giải cao hơn, và Ảnh sang văn bản (OCR) có thể đọc lại chữ nhỏ ở kích thước gấp đôi và tăng độ tương phản trước khi nhận dạng.
Bảng, cột và bố cục
Kết quả là văn bản thuần. Bảng mất lưới, trang nhiều cột có thể ra theo từng cột hoặc theo từng dòng cắt ngang các cột, còn hộp văn bản và chú thích ảnh nằm ở chỗ mà tệp hoặc bộ máy OCR xếp chúng trong thứ tự đọc. Nhận dạng từ và dựng lại bố cục là hai bài toán khác nhau, và công cụ chỉ giải quyết bài toán thứ nhất. Với bảng số liệu, hãy đối chiếu từng giá trị với bản gốc hoặc nhập lại bảng vào bảng tính; với tài liệu dài, hãy dựng lại tiêu đề và đoạn văn trong trình soạn thảo sau khi trích xuất.
Kiểm tra và làm sạch kết quả
- So vài con số, tên và ngày tháng với bản gốc; lỗi OCR ở chữ số rất dễ bị bỏ sót.
- Tìm các nhầm lẫn điển hình: 0 và O, 1, l và I, 5 và S, rn và m, cùng các dấu thanh bị mất hoặc sai.
- Nối lại các từ bị ngắt bằng gạch nối ở cuối dòng và các dòng bị ngắt giữa đoạn văn.
- Xóa dấu trang, đầu trang và số trang nếu bạn cần văn bản liền mạch.
- Giữ kết quả bằng "Sao chép văn bản" hoặc "Lưu dưới dạng .TXT"; tệp được lưu là văn bản thuần UTF-8.
Câu hỏi thường gặp
Vì sao có trang ra kết quả trống?
Trang đó không có lớp văn bản và OCR không tìm thấy gì đọc được: bản quét có thể trống, quá mờ hoặc quá nhỏ, hoặc chữ là chữ viết tay. Hãy thử bản quét rõ hơn, hoặc chuyển trang bằng PDF sang JPG rồi dùng Ảnh sang văn bản với các tùy chọn tăng tương phản và phóng to.
Công cụ có đọc được PDF có mật khẩu không?
Không đọc được PDF yêu cầu mật khẩu khi mở; thay vào đó công cụ hiển thị lỗi. Nếu bạn có quyền, hãy mở tệp bằng mật khẩu trong trình xem PDF và lưu một bản không bảo vệ trước.
Công cụ có tạo được PDF có thể tìm kiếm không?
Không. Kết quả là văn bản thuần mà bạn có thể sao chép hoặc lưu thành tệp .txt, còn tệp PDF không bị thay đổi. Các chương trình tạo PDF có thể tìm kiếm sẽ thêm một lớp văn bản OCR vô hình lên trên mỗi trang quét.
Vì sao OCR chậm với tài liệu dài?
Sau khi tải bộ máy OCR và dữ liệu ngôn ngữ, mỗi trang quét được vẽ thành ảnh và nhận dạng trong trình duyệt, lần lượt từng trang. Trên thiết bị chậm, một trang có thể mất vài giây hoặc lâu hơn. Trang có lớp văn bản nhanh hơn nhiều vì không cần nhận dạng.