Hi All,
A few days ago, I found this bug with scanned pdfs that use /Rotate flag. think it’s a fairly serious bug. Did any of you encounter this? How to report it such that it is fixed (I did so on the website but no response)?
Basically: OpenAI’s PDF pipeline ignores the /Rotate entry defined in the PDF spec. Scanners typically store the raw bitmap in the sensor’s native orientation (e.g. landscape) and add a /Rotate flag so viewers display it correctly as portrait — without re-encoding the image.
The PDF-to-image rasterizer then only exposes a square crop of one side of the raw bitmap to the vision model. The result: part of the page is simply never seen — the model either fails to read the content or hallucinates.
The bug reproduces 100% of and affects GPT-4.1, 5.3, and 5.4 — on both the API and the website (when thinking is disabled).
Gemini handles it correctly. Reported to OpenAI on April 10, 2026, still unfixed.
code:
from PIL import Image, ImageDraw, ImageFont
import pypdf
import random
import io
PAGE_W = 1240
PAGE_H = 1754
NO_ROTATE_PDF = “OK.pdf”
WITH_ROTATE_PDF = “NOK.pdf”
def make_page(number: str) → Image.Image:
img = Image.new(“RGB”, (PAGE_W, PAGE_H), “white”)
draw = ImageDraw.Draw(img)
font = ImageFont.load_default(100)
text = f"Number: {number}"
bbox = draw.textbbox((0, 0), text, font=font)
text_width = bbox\[2\] - bbox\[0\]
x = (PAGE_W - text_width) / 2
y = 100 - bbox\[1\]
draw.text((x, y), text, fill="black", font=font)
return img
def save_pdf(image: Image.Image, path: str, rotate: int) → None:
buf = io.BytesIO()
image.save(buf, format=“PDF”, resolution=200.0)
buf.seek(0)
reader = pypdf.PdfReader(buf)
writer = pypdf.PdfWriter()
page = reader.pages\[0\]
if rotate:
# page.rotate() only updates the /Rotate entry in the page
page.rotate(rotate)
writer.add_page(page)
with open(path, "wb") as f:
writer.write(f)
def generate_pdfs(number: str) → None:
upright = make_page(number)
# PDF A: bitmap stored upright (1240 x 1754), no /Rotate flag.
save_pdf(upright, NO_ROTATE_PDF, rotate=0)
# PDF B: bitmap stored rotated 90 degrees clockwise. /Rotate 270 to rotate the page
sideways = upright.rotate(-90, expand=True)
save_pdf(sideways, WITH_ROTATE_PDF, rotate=270)
number = f"{random.randint(100000, 999999)}"
generate_pdfs(number)