Hướng dẫn Sửa ngắt dòng sai bằng Sigil Regex sau khi convert PDF / OCR

Thảo luận trong 'Hướng dẫn chung' bắt đầu bởi maxiqboy, 18/4/17.

  1. maxiqboy

    maxiqboy Lớp 6

    Thường sau khi convert pdf hay OCR sang ebook, chúng ta thường gặp vấn đề về việc Text thu được bị ngắt dòng lung tung theo cấu trúc của file sách in hay pdf.

    Sau một hồi tìm tòi lục lọi đỏ con mắt trái, tái con mắt phải khắp tve-4u và cả internet, em dường như đã tìm được chân kinh cho riêng mình.

    Em xin phép lập luôn topic mới, Là vì :

    • Mọi người - đặc biệt là các bô lão sẽ có thêm 1 thread riêng để bàn luận về vấn đề này ạ.
      Em thấy đây là một vấn đề khá đau đầu với bản thân em, ngăn cản em làm ebook từ mớ sách scan, pdf của mình.
      Tuy nhiên, thấy trên diễn đàn, post nói về vấn đề này hơi ít ạ,

    • Forum mình có 1 cái vấn đề nho nhỏ, đó là hầu hết tinh hoa của diễn đàn không nằm ở 1 topic riêng biệt
      Mà thường nằm ẩn nấp ở page 5 page 10 của 1 Thread nào đó, khi có vấn đề, mem mới rất rất rất khó tìm thấy.

      Vì vậy nên, Em tổng hợp ra đây cho các mem mới tiện tra cứu tìm hiểu ạ

    Rất mong được các bác ủng hộ ạ

    Đây là hai quote giá trị về vấn đề ở topic này, xin quote lại cho các bác cùng tham khảo ạ.

    Nguồn tham khảo :


    Ngoài ra, em còn tìm thêm 2 cú pháp nữa tương tự ạ :


    Find :
    ([^\.!?])
    </p>
    <p>
    (\p{Ll})

    Replace :
    \1 \2

    Giải thích cú pháp :

    dấu chấm là : \.
    [^\.!?] là nhóm các ký tự mà ko có chứa dấu kết thúc chấm . chấm than ! và hỏi chấm ?

    ( ) là nhóm chúng lại, gán cho chúng giá trị số tự nhiên

    \p{Ll} như bác @NQK đã chỉ, là các ký tự Unicode viết thường.


    Phải copy từ trên Sigil xuống để có cú pháp đúng,
    [​IMG]
    Ban đầu copy dính chữ liền trước qua 2 tag p đến chữ liền sau

    ta có :
    c

    </p>

    <p>

    t

    sau đó sửa c = ([^\.!?]) và t = (\p{Ll})

    Ở phần Replace ta điền :
    \1 \2

    giữa \1 và \2 là dấu cách.

    Xong xuôi, ấn Find thử 1 vài lần xem cú pháp có hoạt động ko ?

    Hiện No match Found là cú pháp sai ở đâu đó rồi, cần check kỹ lại

    Nếu Sigil tìm thấy đúng những đoạn cần sửa, ta ấn thử Replace xem có okie ko,

    Nếu okie 1 vài lần thì tự tin mà replace all thui.
    [​IMG]

    Kết quả khá nuột ạ, có lẽ là đến 99% luôn ạ
    ( 1% trường hợp vô tình chữ Hoa đầu tiên nhưng ko cần xuống dòng, cái này fix tay được ạ )
    ví dụ :

    Nếu có quá nhiều trường hợp vô tình thì ta có thể sử dụng cú pháp sau chỉ xóa chỗ nào xuống dòng ko có dấu kết thúc câu mà thôi

    Find :
    ([^\.!?])
    </p>
    <p>

    Replace :
    \1

    có dấu cách sau \1

    Kết quả sẽ được như sau :


    [​IMG]

    Làm cách này thì phần Chương sẽ nằm liền dòng với nội dung

    Nói chung cái này mình linh hoạt vì ko thể có cách nào tối ưu 100% được






    Em có tham khảo thêm ở đây ạ :
    Vui lòng đăng nhập hoặc đăng ký để xem link

    Các bác còn nguồn nào khác thì cho em hóng với ạ,

    Mong các bác đàm đạo và hướng dẫn em thêm ạ,

    Em cảm ơn ạ
     
    Chỉnh sửa cuối: 18/4/17
  2. tamchec

    tamchec Sinh viên năm I

    Plugin Vui lòng đăng nhập hoặc đăng ký để xem link có chức năng "Fix ALL broken line endings". Cũng không thể đúng 100% nhưng mình thấy dùng khá tiện.

    Ngoài ra plugin trên còn có thể tự động sửa lỗi nhận diện nhầm khi OCR nếu có file đầu vào như thế này:
    Mã:
    ...
    beU|bell
    uóc|ước
    đưọc|được
    ...
     
  3. 4DHN

    4DHN Tiêu Dao

    Vẫn bị lỗi nếu đầu paragraph tiếp là một chữ hoa:

    Trước:
    01.jpg

    Sau:

    02.jpg

    Được cái là đỡ phải gõ câu lệnh. :D
     
    maxiqboy and tamchec like this.
  4. maxiqboy

    maxiqboy Lớp 6

    Tool ngon vậy anh em càng nhàn :D hihi tốt quá rồi ạ,

    Vì 1 thế giới tool thay sức người :D
     

Chia sẻ trang này