스캔한 PDF 파일에서 흰색 배경에 프린터에서 바로 사용할 수 있는 검정색 텍스트 가져오기(회색조 또는 컬러 배경 제거)

스캔한 PDF 파일에서 흰색 배경에 프린터에서 바로 사용할 수 있는 검정색 텍스트 가져오기(회색조 또는 컬러 배경 제거)

종이 문서의 사진을 스캔 문서로 바꾸려면 어떻게 해야 합니까?PDF 파일에 대해 이야기하는 것과 관련이 있지만 동일하지는 않습니다. 연결된 질문에 대한 답변에서 이미지 처리가 복잡해 보입니다. 특히 관련이 있기 때문입니다.각 이미지를 별도로 처리: 주어진내 PDF에는 수백 페이지가 있어요, 제가 ​​기대하는 솔루션은 이미지 처리/편집이 아니라 단순히디지털 사진과 문서를 실제와 동일하게 스캔. 입력은 사진 기반 PDF 또는 사진 모음이고 출력은 "일반" 스캔 문서인 "가상 스캐너"와 같은 것을 의미합니다. (또한스캔테일러도구 권장 - 또한여기- 현재 Linux 버전이 부족한 것 같습니다.)


이것은~ 아니다OCR에 대해~ 아니다이미지를 텍스트로 변환하는 방법에 대해 알아보세요.

내가 의미하는 바를 명확히 하기 위해 몇 가지 예를 게시하겠습니다.

있다텍스트 기반의 PDF 파일, 이미지가 아니며 pdf로 내보낸 텍스트 파일(docx 또는 odt라고 가정)입니다. 인쇄할 준비가 된 것 같습니다.

여기에 이미지 설명을 입력하세요

위의 내용은~ 아니다내가 여기서 논의하는 것.

제가 관심을 갖고 있는 것은 아래 이미지의 PDF, 즉 이미지와 너무 유사해 보이는 스캔된 텍스트 페이지와 디지털화된 텍스트처럼 보이는 스캔된 텍스트 페이지의 차이입니다.

첫 번째는 다음과 같은 이미지로 구성됩니다.찍은 사진도서 페이지 수:

여기에 이미지 설명을 입력하세요

또는

여기에 이미지 설명을 입력하세요

그러한 사본종이에 다시 인쇄하는 것은 거의 불가능합니다, 배경도 인쇄됩니다.

두 번째는 우리가 기대하는 것입니다.스캔텍스트로 인쇄할 수 있습니다.

여기에 이미지 설명을 입력하세요

또는

여기에 이미지 설명을 입력하세요

그림 같은 PDF는 이미 OCR 처리되어 텍스트를 검색할 수 있으며 여전히 (페이지) 사진 모음처럼 보일 수 있습니다. 여기서 OCR은 문제가 되지 않습니다.

내가 원하는 것은 "스캔된" pdf의 선명한 흑백 모양과 사진에서는 정상이지만 인쇄된 페이지에서는 없어야 하는 모든 "실제" 세부 사항(특히 그림자)을 제거하는 것입니다.


@vanadium이 댓글에서 알 수 있듯이 저는스마트폰의 Google Scan과 매우 유사하게 문서 사진을 자동으로 정리하는 소프트웨어 솔루션을 찾고 있습니다..

@ user535733이 의견에서 말했듯이 여기서 문제는 적어도 어느 정도는그레이스케일(스캔/이미지) 텍스트흑백으로.

답변1

scantailor더 이상 유지 관리되지 않지만 여전히 소스에서 빌드하여 사용할 수 있습니다.

그러나, 그원본 저장소qt4최근 Ubuntu 버전에서는 쉽게 설치할 수 없습니다 . 예를 들어 사용할 수 있습니다이 포크에 적응한 것입니다 qt5.

전제 조건:

sudo apt install libjpeg-dev zlib1g-dev libpng-dev libtiff-dev libboost-dev libxrender-dev libboost-all-dev

설치:

git clone https://github.com/victl/scantailor
cd scantailor
cmake .
make
sudo make install

면책조항: 저는 이 포크의 관리자를 알지 못하며 그의 버전의 안전성에 대해 아무 말도 할 수 없습니다.


또 다른 옵션사용하는 것입니다스캔테일러 어드밴스드. 당신은 그것을 통해 설치할 수 있습니다 snap...

sudo snap install scantailor-advanced

... 또는플랫팩.

... 또는 통해아빠.

sudo add-apt-repository ppa:alex-p/scantailor
sudo apt update
sudo apt install scantailor # or scantailor-advanced

빠른 테스트:

여기에 이미지 설명을 입력하세요

답변2

PDF에 대한 직접 솔루션(수동 이미지 추출 없음):

OCR을 복원하는 데 사용 ocrmypdf(마지막에 언급됨)보완적인ocrmypdf -h이 답변의 일부) 요청한 것과 정확히 같은 옵션이 표시되는 것을 확인했습니다 .

--remove-background Attempt to remove background from gray or color pages, setting it to white

초기 PDF에는 이미 OCR이 있으므로 다음 옵션 중 하나를 사용하지 않으면 오류가 발생합니다.

-f, --force-ocr Rasterize any text or vector objects on each page, apply OCR, and save the rastered output (this rewrites the PDF)

또는

-s, --skip-text Skip OCR on any pages that already contain text, but include the page in final output; useful for PDFs that contain a mix of images, text pages, and/or previously OCRed pages

이미 OCR이 포함된 수백 페이지가 포함된 대용량 파일 중 하나에 각각을 개별적으로 적용하면 프로세스가 중단되었습니다.

최고의 솔루션내가 보기엔 처음인 것 같아PDF로 인쇄OCR을 제거하는 초기 파일을 만든 다음

ocrmypdf input.pdf output.pdf -l <LANG> --remove-background -v

영어의 경우 -l옵션이 필요하지 않습니다. -v터미널의 자세한 내용을 위한 것입니다.

결과 pdf는 (옵션으로 인해 --remove-background) 입력보다 큽니다. 아래와 같이 크기를 줄이세요.


Scan Tailor에 대한 보완책으로주요 답변

해당 아이콘조차도 여기서 요청한 내용에 정확히 부합한다는 사실을 보여줍니다.

![여기에 이미지 설명을 입력하세요.

PDF와 함께 Scan Tailor를 사용하는 방법은 다음과 같습니다.

  1. 모든 PDF 페이지를 이미지 파일로 추출- 이 도구는 PDF를 직접 처리하지 않고 이미지가 필요하기 때문입니다. Master PDF Editor가 이 작업을 수행할 수 있지만 내 컴퓨터에서는 약 80개의 이미지를 추출한 후 충돌이 발생합니다. 그러나 추출할 페이지의 새로운 배치/범위를 설정하여 계속 사용할 수 있습니다. (PDF Mod가 처리 전에 충돌했습니다.) 몇 번의 시도 후에 내가 선호하는 것은 pdftoppm MY_PDF.pdf NAME -tiff다음과 같은 명령을 사용하여 속도는 느리지만 신뢰할 수 있는 CLI 방법입니다.여기. — tiff(파일 제공 ) 대신 다른 변수를 사용할 수 있습니다 ( tif예: png또는 ) jpeg. 다양한 추출 옵션에 대한 Dolphin 서비스 메뉴 작업 세트는 여기를 참조하세요.
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=pdf;tif;jpeg;
X-KDE-Submenu=PDF action: EXTRACT ALL pages
Icon=application-pdf

[Desktop Action pdf]
Name=Extract pages as pdf
Icon=application-pdf
Exec=bash -c 'pdf=$(pdftk "%u" burst); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';

[Desktop Action tif]
Name=Extract pages as tif
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -tiff); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';


[Desktop Action jpeg]
Name=Extract pages as jpeg
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -jpeg); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';
  1. Scan Tailor에서 결과 이미지를 로드하고 처리합니다.. 결과 이미지 파일을 별도의 폴더에 넣고 Scan Tailor의 새 프로젝트>입력 디렉터리 아래에 해당 폴더를 추가합니다. (저는 해당 프로그램을 설치했습니다.PPA에서, 기본 답변 아래 @N0rbert의 의견에서 말했듯이.) 텍스트가 아닌 실제 이미지가 포함된 일부 페이지는 다음과 같은 경우 더 좋아 보일 수 있습니다.그들 각자를 위해기본 "흑백"(여기서는 텍스트를 의미함) 대신 "회색조 및 컬러"가 선택되었습니다. 나열된 절차를 하나씩 실행합니다. 마지막 페이지("출력")를 실행하기 전에 페이지를 확인하세요.

여기에 이미지 설명을 입력하세요

  1. 결과 이미지로 새 PDF를 만듭니다.. (먼저 결과 tif파일이 원하는 대로인지 확인하세요.) 새 PDF를 만드는 방법에는 여러 가지가 있습니다. 제가 시도한 GUI 도구가 곧 충돌하거나 이상한 결과를 제공했기 때문에 결과 tif파일을 별도의 폴더에 넣고 거기에서 명령을 실행하는 것을 선호합니다 img2pdf *.tif -o out.pdf.여기. (파일의 적절한 이름 지정/번호 지정이 필요할 수 있습니다. 이에 대한 추가 정보여기.)

결과로 나오는 "맞춤형" PDF는 초기 PDF보다 작지만 크기 감소 비율은 무시하는 요인에 따라 달라집니다(그러나 초기 PDF에 포함된 페이지는 1단계에서 추출되어야 한다고 생각합니다). 내 생각에는 위와 아래 명령을 처리하기 전에 형식, dpi 및 기타 세부 사항에 대한 세부 정보를 보려면 터미널에서 사용하는 대신 사용해야 합니다 jpeg.tifpngpdfimages -list your.pdf

최종 PDF는 다음과 같은 명령을 사용하여 더 줄일 수 있습니다.

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

이에 대한 자세한 내용은,여기.

위 링크를 기반으로 한 Dolphin 서비스 메뉴 작업 세트는 다음과 같습니다.

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=shrink;shrink0;shrink1;shrink2;
X-KDE-Submenu=PDF action: SHRINK
Icon=application-pdf

[Desktop Action shrink]
Name=Shrink pdf to "printer" size, 300dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer    -sOutputFile="${f%.pdf}_printer.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';

[Desktop Action shrink0]
Name=Shrink pdf to "prepress" size, 300dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress    -sOutputFile="${f%.pdf}_prepress.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';


[Desktop Action shrink1]
Name=Shrink pdf to "ebook size, 150dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook    -sOutputFile="${f%.pdf}_small.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';

[Desktop Action shrink2]
Name=Shrink pdf to "screen" size, 72dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/screen    -sOutputFile="${f%.pdf}_smaller.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';

도움을 좀 받았어요이것대답도.


OCR(텍스트 검색 및 복사 기능)이 손실되었습니다.위 절차 중에 초기 PDF에 있는 경우. OCR을 얻으려면 다음을 사용하십시오. ocrmypdf input.pdf output.pdf 영어의 경우, 말했듯이여기. 다른 언어는 로 찾아서 apt-cache search tesseract-ocr설치하세요. -l <LANG>특정 언어의 경우 명령 끝에 추가합니다 . 더여기; 이름도 보고여기.

다음은 두 가지 옵션이 있는 루마니아어 OCR용 Dolphin 서비스 메뉴 작업입니다(하나는 터미널 진행 및 고정 출력 이름, 다른 하나는 백그라운드 프로세스이지만 입력 기반 출력 이름). 터미널 및 출력 이름 기반 프로세스를 모두 갖고 싶습니다. 입력할 수 있지만 방법을 모르는 경우 여기에 게시하세요!) 영어의 경우 "Romanian"을 바꾸고 -l ron변수를 제거합니다.

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=ocr1;ocr2;
X-KDE-Submenu=PDF action: apply OCR
Icon=application-pdf

[Desktop Action ocr1]
Name=Apply OCR Romanian (see progress in terminal; output name: ocr_ro.pdf!)
Icon=application-pdf
Exec=konsole --noclose -e ocrmypdf "%u" ocr_ro.pdf -l ron

[Desktop Action ocr2]
Name=Apply OCR Romanian (backgroud process: NO terminal! input>output name)
Icon=application-pdf
Exec=bash -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf" -l ron;'

(이미지 추출 및 처리와 'pdf로 인쇄'를 하면 OCR이 제거되지만 위와 같이 고스트스크립트로 크기를 줄입니다.하지 않습니다이므로 OCR 전후에 "축소"를 적용할 수 있습니다.)

답변3

imageMagick과 다음 스크립트를 사용하여 꽤 좋은 결과를 얻었습니다.http://www.fmwconcepts.com/imagemagick/shadowhighlight/index.php

다음 매개변수를 사용한 결과는 다음과 같습니다.

./shadowhighlight -ma 100 -sa 100 -ha 00 -hw 0 -bc 20 inputFile.png OutputFile.png

여기에 이미지 설명을 입력하세요

답변4

Gimp를 설치하세요(appimage를 사용하는 것이 좋습니다). 다음은 옵션입니다:

  1. 색상>임계값을 선택하면 이미지가 흑백이 됩니다. 이를 위해서는 각 페이지마다 수행해야 합니다.

두 번째 옵션 2) 이미지>모드>인덱스>흑백 1비트 팔레트 사용을 선택합니다.

PDF에 있는 페이지 수에 관계없이 모두 1비트 흑백으로 변환됩니다.

2021년 2월 11일 편집: 제기된 쿼리에 따라키리쿠스

내가 따르는 단계는 다음과 같습니다.

  1. "간단 스캔" 또는 Xsane을 사용하여 페이지를 스캔하세요. (간단한 스캔이 컬러로 더 잘 작동한다는 것을 알았습니다) 또는 이미 사용 가능한 스캔 PDF를 사용하십시오.
  2. 파일>김프에서 pdf 파일을 열거나 끌어다 놓습니다. 여기서는 필요한 이미지의 너비 X 높이를 지정해야 합니다. (150dpi 또는 300dpi가 필요한 dpi를 확인하고 그에 따라 너비 값을 제공하십시오)
  3. 이제 1페이지 이상이 포함된 PDF 파일이 레이어로 열립니다.
  4. 이미지>모드>인덱스>흑백 1비트 팔레트 사용으로 이동하세요.
  5. 이제 파일> "다른 이름으로 내보내기"를 사용하여 PDF를 내보냅니다.
  6. 내보낸 PDF의 각 페이지가 요구 사항에 맞는지 확인하세요. 그렇지 않은 경우 다음 방법으로 결함이 있는 각 페이지를 개별적으로 처리합니다. a) 이미지> 모드> 회색조를 선택합니다. b) (페이지에 회색/노이즈가 너무 많은 경우) 색상> 노출을 선택하고 필요에 따라 조정합니다. c) 색상> 임계값을 선택하면 이미지가 흑백이 됩니다. 이를 위해서는 결함이 있는 각 페이지에 대해 필요한 품질과 일치하도록 작업을 수행해야 합니다. d) 이제 원본 PDF 파일 레이어의 이 레이어에 편집된 페이지를 삽입하고 결함이 있는 페이지 레이어를 삭제합니다. PDF를 다시 내보냅니다. 이것이 도움이 되기를 바랍니다.

관련 정보