PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱X-ray.

x-ray — это небольшая, но очень полезная Python‑библиотека и CLI‑утилита для поиска «плохих» редактирований в PDF: тех случаев, когда поверх текста просто нарисовали чёрный прямоугольник, но сам текст под ним по‑прежнему можно выделить и прочитать.

❓Зачем нужен x-ray:

🔘Free Law Project собирает миллионы судебных и других PDF‑документов и регулярно сталкивается с тем, что конфиденциальные данные замазывают «криво», оставляя текст доступным под чёрной плашкой.

🔘x-ray создавался как способ автоматически находить такие провальные редактирования, чтобы оценивать масштаб проблемы и предотвращать утечки до публикации документов.

🔹Как это работает внутри:

🔘x-ray использует PyMuPDF для высокопроизводительного парсинга PDF.

🔘Алгоритм в общих чертах: найти прямоугольники, найти буквы в тех же координатах, отрендерить прямоугольник в картинку и проверить, является ли он однородным по цвету; если да и под ним есть текст, это помечается как «плохая» редакция.

🔻Пример:
from pathlib import Path
from pprint import pprint
import xray

# 1. Указываем путь к PDF
pdf_path = Path("docs/sample.pdf")

# 2. Запускаем проверку: xray сам откроет файл и проанализирует его
bad_redactions = xray.inspect(pdf_path)

# 3. Структура результата:
# {
# 1: [
# {
# "bbox": (x1, y1, x2, y2), # координаты «чёрного прямоугольника»
# "text": "утёкший текст под ним"
# },
# ...
# ],
# 2: [...],
# ...
# }
pprint(bad_redactions)

# 4. Пример пост‑обработки: просто напечатаем найденные утечки по страницам
if not bad_redactions:
print("Плохих редактирований не найдено.")
else:
for page, items in bad_redactions.items():
print(f"\nСтраница {page}:")
for item in items:
bbox = item["bbox"]
text = item["text"]
print(f" BBox: {bbox}")
print(f" Текст: {text}")

Ключевые моменты: xray.inspect(...) принимает путь, URL или bytes; возвращает словарь, где ключи — номера страниц, а значения — списки словарей с координатами прямоугольника (bbox) и текстом, который под ним всё ещё читается.

#xray #Python #PDF #Redaction #BadRedactions #InfoSec #Privacy #LegalTech #PyMuPDF #CLI

📱Ссылка на репозиторий:
https://github.com/freelawproject/x-ray
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3👍1