A new HTML backend that handles styled html (ignors it) as well as images.

- Updated unit tests
- Added documentation (Example notebook)

Note: MyPy fails.
Seems to be a known issue with BeautifulSoup:
https://github.com/python/typeshed/pull/13604

Signed-off-by: Alexander Vaagan <alexander.vaagan@gmail.com>
Signed-off-by: vaaale <2428222+vaaale@users.noreply.github.com>
This commit is contained in:
Alexander Vaagan 2025-04-26 16:30:09 +02:00 committed by vaaale
parent 98b5eeb844
commit 733360c7b2
38 changed files with 4983 additions and 4233 deletions

View File

@ -1,22 +1,24 @@
import base64
import logging import logging
import traceback import re
from enum import Enum
from io import BytesIO from io import BytesIO
from pathlib import Path from pathlib import Path
from typing import Final, Optional, Union, cast from typing import Optional, Union
from bs4 import BeautifulSoup, NavigableString, PageElement, Tag import requests
from bs4.element import PreformattedString from bs4 import BeautifulSoup, NavigableString, Tag
from docling_core.types.doc import ( from docling_core.types.doc import (
DocItem,
DocItemLabel, DocItemLabel,
DoclingDocument, DoclingDocument,
DocumentOrigin, DocumentOrigin,
GroupItem, Size,
GroupLabel,
TableCell, TableCell,
TableData, TableData,
) )
from docling_core.types.doc.document import ContentLayer from docling_core.types.doc.document import ContentLayer, ImageRef
from PIL import Image, UnidentifiedImageError
from pydantic import AnyUrl, HttpUrl, ValidationError
from typing_extensions import override from typing_extensions import override
from docling.backend.abstract_backend import DeclarativeDocumentBackend from docling.backend.abstract_backend import DeclarativeDocumentBackend
@ -25,56 +27,38 @@ from docling.datamodel.document import InputDocument
_log = logging.getLogger(__name__) _log = logging.getLogger(__name__)
# tags that generate NodeItem elements # Tags that initiate distinct Docling items
TAGS_FOR_NODE_ITEMS: Final = [ _BLOCK_TAGS = {"h1", "h2", "h3", "h4", "h5", "h6", "p", "ul", "ol", "table"}
"address",
"details",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"p",
"pre",
"code",
"ul",
"ol",
"li",
"summary",
"table",
"figure",
"img",
]
class HTMLDocumentBackend(DeclarativeDocumentBackend): class ImageOptions(str, Enum):
"""Image options for HTML backend."""
NONE = "none"
INLINE = "inline"
REFERENCED = "referenced"
class BaseHTMLDocumentBackend(DeclarativeDocumentBackend):
@override @override
def __init__(self, in_doc: "InputDocument", path_or_stream: Union[BytesIO, Path]): def __init__(
self,
in_doc: InputDocument,
path_or_stream: Union[BytesIO, Path],
image_options: Optional[ImageOptions] = ImageOptions.NONE,
):
super().__init__(in_doc, path_or_stream) super().__init__(in_doc, path_or_stream)
self.image_options = image_options
self.soup: Optional[Tag] = None self.soup: Optional[Tag] = None
# HTML file:
self.path_or_stream = path_or_stream
# Initialise the parents for the hierarchy
self.max_levels = 10
self.level = 0
self.parents: dict[int, Optional[Union[DocItem, GroupItem]]] = {}
for i in range(self.max_levels):
self.parents[i] = None
try: try:
if isinstance(self.path_or_stream, BytesIO): raw = (
text_stream = self.path_or_stream.getvalue() path_or_stream.getvalue()
self.soup = BeautifulSoup(text_stream, "html.parser") if isinstance(path_or_stream, BytesIO)
if isinstance(self.path_or_stream, Path): else Path(path_or_stream).read_bytes()
with open(self.path_or_stream, "rb") as f: )
html_content = f.read() self.soup = BeautifulSoup(raw, "html.parser")
self.soup = BeautifulSoup(html_content, "html.parser")
except Exception as e: except Exception as e:
raise RuntimeError( raise RuntimeError(f"Could not initialize HTML backend: {e}")
"Could not initialize HTML backend for file with "
f"hash {self.document_hash}."
) from e
@override @override
def is_valid(self) -> bool: def is_valid(self) -> bool:
@ -89,7 +73,6 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
def unload(self): def unload(self):
if isinstance(self.path_or_stream, BytesIO): if isinstance(self.path_or_stream, BytesIO):
self.path_or_stream.close() self.path_or_stream.close()
self.path_or_stream = None self.path_or_stream = None
@classmethod @classmethod
@ -99,490 +82,247 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
@override @override
def convert(self) -> DoclingDocument: def convert(self) -> DoclingDocument:
# access self.path_or_stream to load stuff
origin = DocumentOrigin( origin = DocumentOrigin(
filename=self.file.name or "file", filename=self.file.name or "file",
mimetype="text/html", mimetype="text/html",
binary_hash=self.document_hash, binary_hash=self.document_hash,
) )
doc = DoclingDocument(name=self.file.stem or "file", origin=origin) doc = DoclingDocument(name=self.file.stem or "file", origin=origin)
_log.debug("Trying to convert HTML...") _log.debug("Starting HTML conversion...")
if not self.is_valid():
if self.is_valid(): raise RuntimeError("Invalid HTML document.")
assert self.soup is not None assert self.soup is not None
content = self.soup.body or self.soup
# Replace <br> tags with newline characters # Remove all script/style content
# TODO: remove style to avoid losing text from tags like i, b, span, ... for tag in self.soup.find_all(["script", "style"]):
for br in content("br"): tag.decompose()
body = self.soup.body or self.soup
# Normalize <br> tags to newline strings
for br in body.find_all("br"):
br.replace_with(NavigableString("\n")) br.replace_with(NavigableString("\n"))
headers = content.find(["h1", "h2", "h3", "h4", "h5", "h6"]) # Decide content layer by presence of headers
headers = body.find(list(_BLOCK_TAGS))
self.content_layer = ( self.content_layer = (
ContentLayer.BODY if headers is None else ContentLayer.FURNITURE ContentLayer.BODY if headers is None else ContentLayer.FURNITURE
) )
self.walk(content, doc)
else: # Walk the body to build the DoclingDocument
raise RuntimeError( self._walk(body, doc, parent=doc.body)
f"Cannot convert doc with {self.document_hash} because the backend "
"failed to init."
)
return doc return doc
def walk(self, tag: Tag, doc: DoclingDocument) -> None: def _walk(self, element: Tag, doc: DoclingDocument, parent) -> None:
# Iterate over elements in the body of the document """
text: str = "" Recursively walk element.contents, buffering inline text across tags like <b> or <span>,
for element in tag.children: emitting text nodes only at block boundaries, and extracting images immediately.
if isinstance(element, Tag): """
buffer: list[str] = []
def flush_buffer():
if not buffer:
return
text = "".join(buffer).strip()
buffer.clear()
if not text:
return
# Split on newlines for <br>
for part in text.split("\n"):
seg = part.strip()
if seg:
doc.add_text(DocItemLabel.TEXT, seg, parent=parent)
for node in element.contents:
# Skip scripts/styles
if isinstance(node, Tag) and node.name.lower() in ("script", "style"):
continue
# Immediate image extraction
if isinstance(node, Tag) and node.name.lower() == "img":
flush_buffer()
self._emit_image(node, doc, parent)
continue
# Block-level element triggers flush + handle
if isinstance(node, Tag) and node.name.lower() in _BLOCK_TAGS:
flush_buffer()
self._handle_block(node, doc, parent)
# Inline tag with nested blocks: recurse
elif isinstance(node, Tag) and node.find(list(_BLOCK_TAGS)):
flush_buffer()
self._walk(node, doc, parent)
# Inline text
elif isinstance(node, Tag):
buffer.append(node.get_text())
elif isinstance(node, NavigableString):
buffer.append(str(node))
# Flush any remaining text
flush_buffer()
def _handle_block(self, tag: Tag, doc: DoclingDocument, parent) -> None:
tag_name = tag.name.lower()
if tag_name == "h1":
text = tag.get_text(strip=True)
if text:
doc.add_title(text, parent=parent)
for img_tag in tag.find_all("img", recursive=True):
self._emit_image(img_tag, doc, parent)
elif tag_name in {"h2", "h3", "h4", "h5", "h6"}:
level = int(tag_name[1])
text = tag.get_text(strip=True)
if text:
doc.add_heading(text, level=level, parent=parent)
for img_tag in tag.find_all("img", recursive=True):
self._emit_image(img_tag, doc, parent)
elif tag_name == "p":
for part in tag.get_text().split("\n"):
seg = part.strip()
if seg:
doc.add_text(DocItemLabel.TEXT, seg, parent=parent)
for img_tag in tag.find_all("img", recursive=True):
self._emit_image(img_tag, doc, parent)
elif tag_name in {"ul", "ol"}:
is_ordered = tag_name == "ol"
group = (
doc.add_ordered_list(parent=parent)
if is_ordered
else doc.add_unordered_list(parent=parent)
)
for li in tag.find_all("li", recursive=False):
li_text = li.get_text(separator=" ", strip=True)
li_item = doc.add_list_item(
text=li_text, enumerated=is_ordered, parent=group
)
# Nested lists inside <li>
for sub in li.find_all(["ul", "ol"], recursive=False):
self._handle_block(sub, doc, parent=group)
for img_tag in li.find_all("img", recursive=True):
self._emit_image(img_tag, doc, li_item)
elif tag_name == "table":
# Add table item and extract nested images
data = self._parse_table(tag, doc, parent)
doc.add_table(data=data, parent=parent)
def _emit_image(self, img_tag: Tag, doc: DoclingDocument, parent) -> None:
"""
Helper to create a PictureItem (with optional CAPTION) for an <img> tag.
"""
if ImageOptions.NONE == self.image_options:
return
alt = (img_tag.get("alt") or "").strip()
caption_item = None
if alt:
caption_item = doc.add_text(DocItemLabel.CAPTION, alt, parent=parent)
src_url = img_tag.get("src")
width = img_tag.get("width", "128")
height = img_tag.get("height", "128")
img_ref = None
if ImageOptions.INLINE == self.image_options:
try: try:
self.analyze_tag(cast(Tag, element), doc) if src_url.startswith("http"):
except Exception as exc_child: img = Image.open(requests.get(src_url, stream=True).raw)
_log.error( elif src_url.startswith("file:"):
f"Error processing child from tag {tag.name}:\n{traceback.format_exc()}" img = Image.open(src_url)
elif src_url.startswith("data:"):
image_data = re.sub("^data:image/.+;base64,", "", src_url)
img = Image.open(BytesIO(base64.b64decode(image_data)))
else:
return
img_ref = ImageRef.from_pil(img, dpi=int(img.info.get("dpi")[0]))
except (FileNotFoundError, UnidentifiedImageError) as ve:
_log.warning(f"Could not load image (src={src_url}): {ve}")
return
elif ImageOptions.REFERENCED == self.image_options:
try:
img_url = AnyUrl(src_url)
img_ref = ImageRef(
uri=img_url,
dpi=72,
mimetype="image/png",
size=Size(width=float(width), height=float(height)),
) )
raise exc_child except ValidationError as ve:
elif isinstance(element, NavigableString) and not isinstance( _log.warning(f"Could not load image (src={src_url}): {ve}")
element, PreformattedString
):
# Floating text outside paragraphs or analyzed tags
text += element
siblings: list[Tag] = [
item for item in element.next_siblings if isinstance(item, Tag)
]
if element.next_sibling is None or any(
item.name in TAGS_FOR_NODE_ITEMS for item in siblings
):
text = text.strip()
if text and tag.name in ["div"]:
doc.add_text(
parent=self.parents[self.level],
label=DocItemLabel.TEXT,
text=text,
content_layer=self.content_layer,
)
text = ""
return return
def analyze_tag(self, tag: Tag, doc: DoclingDocument) -> None: doc.add_picture(image=img_ref, caption=caption_item, parent=parent)
if tag.name in ["h1", "h2", "h3", "h4", "h5", "h6"]:
self.handle_header(tag, doc)
elif tag.name in ["p", "address", "summary"]:
self.handle_paragraph(tag, doc)
elif tag.name in ["pre", "code"]:
self.handle_code(tag, doc)
elif tag.name in ["ul", "ol"]:
self.handle_list(tag, doc)
elif tag.name in ["li"]:
self.handle_list_item(tag, doc)
elif tag.name == "table":
self.handle_table(tag, doc)
elif tag.name == "figure":
self.handle_figure(tag, doc)
elif tag.name == "img":
self.handle_image(tag, doc)
elif tag.name == "details":
self.handle_details(tag, doc)
else:
self.walk(tag, doc)
def get_text(self, item: PageElement) -> str: def _parse_table(self, table_tag: Tag, doc: DoclingDocument, parent) -> TableData:
"""Get the text content of a tag.""" """
parts: list[str] = self.extract_text_recursively(item) Convert an HTML table into TableData, capturing cell spans and text,
and emitting any nested images as PictureItems.
return "".join(parts) + " " """
# Build TableData
# Function to recursively extract text from all child nodes rows = []
def extract_text_recursively(self, item: PageElement) -> list[str]: for sec in ("thead", "tbody", "tfoot"):
result: list[str] = [] section = table_tag.find(sec)
if section:
if isinstance(item, NavigableString): rows.extend(section.find_all("tr", recursive=False))
return [item] if not rows:
rows = table_tag.find_all("tr", recursive=False)
tag = cast(Tag, item) occupied: dict[tuple[int, int], bool] = {}
if tag.name not in ["ul", "ol"]: cells: list[TableCell] = []
for child in tag: max_cols = 0
# Recursively get the child's text content for r, tr in enumerate(rows):
result.extend(self.extract_text_recursively(child)) c = 0
for cell_tag in tr.find_all(("td", "th"), recursive=False):
return ["".join(result) + " "] while occupied.get((r, c)):
c += 1
def handle_details(self, element: Tag, doc: DoclingDocument) -> None: rs = int(cell_tag.get("rowspan", 1) or 1)
"""Handle details tag (details) and its content.""" cs = int(cell_tag.get("colspan", 1) or 1)
txt = cell_tag.get_text(strip=True)
self.parents[self.level + 1] = doc.add_group( cell = TableCell(
name="details", bbox=None,
label=GroupLabel.SECTION, row_span=rs,
parent=self.parents[self.level], col_span=cs,
content_layer=self.content_layer, start_row_offset_idx=r,
end_row_offset_idx=r + rs,
start_col_offset_idx=c,
end_col_offset_idx=c + cs,
text=txt,
column_header=(cell_tag.name == "th"),
row_header=False,
row_section=False,
) )
cells.append(cell)
for dr in range(rs):
for dc in range(cs):
occupied[(r + dr, c + dc)] = True
c += cs
max_cols = max(max_cols, c)
# Emit images inside this table
for img_tag in table_tag.find_all("img", recursive=True):
self._emit_image(img_tag, doc, parent)
return TableData(table_cells=cells, num_rows=len(rows), num_cols=max_cols)
self.level += 1
self.walk(element, doc)
self.parents[self.level + 1] = None
self.level -= 1
def handle_header(self, element: Tag, doc: DoclingDocument) -> None: class HTMLDocumentBackend(BaseHTMLDocumentBackend):
"""Handles header tags (h1, h2, etc.).""" @override
hlevel = int(element.name.replace("h", "")) def __init__(
text = element.text.strip() self,
in_doc: InputDocument,
self.content_layer = ContentLayer.BODY path_or_stream: Union[BytesIO, Path],
if hlevel == 1:
for key in self.parents.keys():
self.parents[key] = None
self.level = 1
self.parents[self.level] = doc.add_text(
parent=self.parents[0],
label=DocItemLabel.TITLE,
text=text,
content_layer=self.content_layer,
)
else:
if hlevel > self.level:
# add invisible group
for i in range(self.level + 1, hlevel):
self.parents[i] = doc.add_group(
name=f"header-{i}",
label=GroupLabel.SECTION,
parent=self.parents[i - 1],
content_layer=self.content_layer,
)
self.level = hlevel
elif hlevel < self.level:
# remove the tail
for key in self.parents.keys():
if key > hlevel:
self.parents[key] = None
self.level = hlevel
self.parents[hlevel] = doc.add_heading(
parent=self.parents[hlevel - 1],
text=text,
level=hlevel - 1,
content_layer=self.content_layer,
)
def handle_code(self, element: Tag, doc: DoclingDocument) -> None:
"""Handles monospace code snippets (pre)."""
if element.text is None:
return
text = element.text.strip()
if text:
doc.add_code(
parent=self.parents[self.level],
text=text,
content_layer=self.content_layer,
)
def handle_paragraph(self, element: Tag, doc: DoclingDocument) -> None:
"""Handles paragraph tags (p) or equivalent ones."""
if element.text is None:
return
text = element.text.strip()
if text:
doc.add_text(
parent=self.parents[self.level],
label=DocItemLabel.TEXT,
text=text,
content_layer=self.content_layer,
)
def handle_list(self, element: Tag, doc: DoclingDocument) -> None:
"""Handles list tags (ul, ol) and their list items."""
if element.name == "ul":
# create a list group
self.parents[self.level + 1] = doc.add_group(
parent=self.parents[self.level],
name="list",
label=GroupLabel.LIST,
content_layer=self.content_layer,
)
elif element.name == "ol":
start_attr = element.get("start")
start: int = (
int(start_attr)
if isinstance(start_attr, str) and start_attr.isnumeric()
else 1
)
# create a list group
self.parents[self.level + 1] = doc.add_group(
parent=self.parents[self.level],
name="ordered list" + (f" start {start}" if start != 1 else ""),
label=GroupLabel.ORDERED_LIST,
content_layer=self.content_layer,
)
self.level += 1
self.walk(element, doc)
self.parents[self.level + 1] = None
self.level -= 1
def handle_list_item(self, element: Tag, doc: DoclingDocument) -> None:
"""Handles list item tags (li)."""
nested_list = element.find(["ul", "ol"])
parent = self.parents[self.level]
if parent is None:
_log.debug(f"list-item has no parent in DoclingDocument: {element}")
return
parent_label: str = parent.label
index_in_list = len(parent.children) + 1
if (
parent_label == GroupLabel.ORDERED_LIST
and isinstance(parent, GroupItem)
and parent.name
): ):
start_in_list: str = parent.name.split(" ")[-1] super().__init__(in_doc, path_or_stream, image_options=ImageOptions.NONE)
start: int = int(start_in_list) if start_in_list.isnumeric() else 1
index_in_list += start - 1
if nested_list:
# Text in list item can be hidden within hierarchy, hence
# we need to extract it recursively
text: str = self.get_text(element)
# Flatten text, remove break lines:
text = text.replace("\n", "").replace("\r", "")
text = " ".join(text.split()).strip()
marker = "" class HTMLDocumentBackendImagesInline(BaseHTMLDocumentBackend):
enumerated = False @override
if parent_label == GroupLabel.ORDERED_LIST: def __init__(
marker = str(index_in_list) self,
enumerated = True in_doc: InputDocument,
path_or_stream: Union[BytesIO, Path],
if len(text) > 0:
# create a list-item
self.parents[self.level + 1] = doc.add_list_item(
text=text,
enumerated=enumerated,
marker=marker,
parent=parent,
content_layer=self.content_layer,
)
self.level += 1
self.walk(element, doc)
self.parents[self.level + 1] = None
self.level -= 1
else:
self.walk(element, doc)
elif element.text.strip():
text = element.text.strip()
marker = ""
enumerated = False
if parent_label == GroupLabel.ORDERED_LIST:
marker = f"{index_in_list!s}."
enumerated = True
doc.add_list_item(
text=text,
enumerated=enumerated,
marker=marker,
parent=parent,
content_layer=self.content_layer,
)
else:
_log.debug(f"list-item has no text: {element}")
@staticmethod
def parse_table_data(element: Tag) -> Optional[TableData]: # noqa: C901
nested_tables = element.find("table")
if nested_tables is not None:
_log.debug("Skipping nested table.")
return None
# Find the number of rows and columns (taking into account spans)
num_rows = 0
num_cols = 0
for row in element("tr"):
col_count = 0
is_row_header = True
if not isinstance(row, Tag):
continue
for cell in row(["td", "th"]):
if not isinstance(row, Tag):
continue
cell_tag = cast(Tag, cell)
val = cell_tag.get("colspan", "1")
colspan = int(val) if (isinstance(val, str) and val.isnumeric()) else 1
col_count += colspan
if cell_tag.name == "td" or cell_tag.get("rowspan") is None:
is_row_header = False
num_cols = max(num_cols, col_count)
if not is_row_header:
num_rows += 1
_log.debug(f"The table has {num_rows} rows and {num_cols} cols.")
grid: list = [[None for _ in range(num_cols)] for _ in range(num_rows)]
data = TableData(num_rows=num_rows, num_cols=num_cols, table_cells=[])
# Iterate over the rows in the table
start_row_span = 0
row_idx = -1
for row in element("tr"):
if not isinstance(row, Tag):
continue
# For each row, find all the column cells (both <td> and <th>)
cells = row(["td", "th"])
# Check if cell is in a column header or row header
col_header = True
row_header = True
for html_cell in cells:
if isinstance(html_cell, Tag):
if html_cell.name == "td":
col_header = False
row_header = False
elif html_cell.get("rowspan") is None:
row_header = False
if not row_header:
row_idx += 1
start_row_span = 0
else:
start_row_span += 1
# Extract the text content of each cell
col_idx = 0
for html_cell in cells:
if not isinstance(html_cell, Tag):
continue
# extract inline formulas
for formula in html_cell("inline-formula"):
math_parts = formula.text.split("$$")
if len(math_parts) == 3:
math_formula = f"$${math_parts[1]}$$"
formula.replace_with(NavigableString(math_formula))
# TODO: extract content correctly from table-cells with lists
text = html_cell.text
# label = html_cell.name
col_val = html_cell.get("colspan", "1")
col_span = (
int(col_val)
if isinstance(col_val, str) and col_val.isnumeric()
else 1
)
row_val = html_cell.get("rowspan", "1")
row_span = (
int(row_val)
if isinstance(row_val, str) and row_val.isnumeric()
else 1
)
if row_header:
row_span -= 1
while (
col_idx < num_cols
and grid[row_idx + start_row_span][col_idx] is not None
): ):
col_idx += 1 super().__init__(in_doc, path_or_stream, image_options=ImageOptions.INLINE)
for r in range(start_row_span, start_row_span + row_span):
for c in range(col_span):
if row_idx + r < num_rows and col_idx + c < num_cols:
grid[row_idx + r][col_idx + c] = text
table_cell = TableCell(
text=text,
row_span=row_span,
col_span=col_span,
start_row_offset_idx=start_row_span + row_idx,
end_row_offset_idx=start_row_span + row_idx + row_span,
start_col_offset_idx=col_idx,
end_col_offset_idx=col_idx + col_span,
column_header=col_header,
row_header=((not col_header) and html_cell.name == "th"),
)
data.table_cells.append(table_cell)
return data class HTMLDocumentBackendImagesReferenced(BaseHTMLDocumentBackend):
@override
def handle_table(self, element: Tag, doc: DoclingDocument) -> None: def __init__(
"""Handles table tags.""" self,
in_doc: InputDocument,
table_data = HTMLDocumentBackend.parse_table_data(element) path_or_stream: Union[BytesIO, Path],
):
if table_data is not None: super().__init__(in_doc, path_or_stream, image_options=ImageOptions.REFERENCED)
doc.add_table(
data=table_data,
parent=self.parents[self.level],
content_layer=self.content_layer,
)
def get_list_text(self, list_element: Tag, level: int = 0) -> list[str]:
"""Recursively extract text from <ul> or <ol> with proper indentation."""
result = []
bullet_char = "*" # Default bullet character for unordered lists
if list_element.name == "ol": # For ordered lists, use numbers
for i, li in enumerate(list_element("li", recursive=False), 1):
if not isinstance(li, Tag):
continue
# Add numbering for ordered lists
result.append(f"{' ' * level}{i}. {li.get_text(strip=True)}")
# Handle nested lists
nested_list = li.find(["ul", "ol"])
if isinstance(nested_list, Tag):
result.extend(self.get_list_text(nested_list, level + 1))
elif list_element.name == "ul": # For unordered lists, use bullet points
for li in list_element("li", recursive=False):
if not isinstance(li, Tag):
continue
# Add bullet points for unordered lists
result.append(
f"{' ' * level}{bullet_char} {li.get_text(strip=True)}"
)
# Handle nested lists
nested_list = li.find(["ul", "ol"])
if isinstance(nested_list, Tag):
result.extend(self.get_list_text(nested_list, level + 1))
return result
def handle_figure(self, element: Tag, doc: DoclingDocument) -> None:
"""Handles image tags (img)."""
# Extract the image URI from the <img> tag
# image_uri = root.xpath('//figure//img/@src')[0]
contains_captions = element.find(["figcaption"])
if not isinstance(contains_captions, Tag):
doc.add_picture(
parent=self.parents[self.level],
caption=None,
content_layer=self.content_layer,
)
else:
texts = []
for item in contains_captions:
texts.append(item.text)
fig_caption = doc.add_text(
label=DocItemLabel.CAPTION,
text=("".join(texts)).strip(),
content_layer=self.content_layer,
)
doc.add_picture(
parent=self.parents[self.level],
caption=fig_caption,
content_layer=self.content_layer,
)
def handle_image(self, element: Tag, doc: DoclingDocument) -> None:
"""Handles image tags (img)."""
_log.debug(f"ignoring <img> tags at the moment: {element}")
doc.add_picture(
parent=self.parents[self.level],
caption=None,
content_layer=self.content_layer,
)

BIN
docs/assets/docx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
docs/assets/html.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
docs/assets/pdf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,12 +1,11 @@
item-0 at level 0: unspecified: group _root_ item-0 at level 0: unspecified: group _root_
item-1 at level 1: title: Introduction item-1 at level 1: title: Introduction
item-2 at level 2: text: This is the first paragraph of the introduction. item-2 at level 1: text: This is the first paragraph of the introduction.
item-3 at level 2: section_header: Background item-3 at level 1: section_header: Background
item-4 at level 3: text: Some background information here. item-4 at level 1: text: Some background information here.
item-5 at level 3: picture item-5 at level 1: list: group group
item-6 at level 3: list: group list item-6 at level 2: list_item: First item in unordered list
item-7 at level 4: list_item: First item in unordered list item-7 at level 2: list_item: Second item in unordered list
item-8 at level 4: list_item: Second item in unordered list item-8 at level 1: ordered_list: group group
item-9 at level 3: ordered_list: group ordered list item-9 at level 2: list_item: First item in ordered list
item-10 at level 4: list_item: First item in ordered list item-10 at level 2: list_item: Second item in ordered list
item-11 at level 4: list_item: Second item in ordered list

View File

@ -19,6 +19,21 @@
"children": [ "children": [
{ {
"$ref": "#/texts/0" "$ref": "#/texts/0"
},
{
"$ref": "#/texts/1"
},
{
"$ref": "#/texts/2"
},
{
"$ref": "#/texts/3"
},
{
"$ref": "#/groups/0"
},
{
"$ref": "#/groups/1"
} }
], ],
"content_layer": "body", "content_layer": "body",
@ -29,7 +44,7 @@
{ {
"self_ref": "#/groups/0", "self_ref": "#/groups/0",
"parent": { "parent": {
"$ref": "#/texts/2" "$ref": "#/body"
}, },
"children": [ "children": [
{ {
@ -40,13 +55,13 @@
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
"self_ref": "#/groups/1", "self_ref": "#/groups/1",
"parent": { "parent": {
"$ref": "#/texts/2" "$ref": "#/body"
}, },
"children": [ "children": [
{ {
@ -57,7 +72,7 @@
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "ordered list", "name": "group",
"label": "ordered_list" "label": "ordered_list"
} }
], ],
@ -67,14 +82,7 @@
"parent": { "parent": {
"$ref": "#/body" "$ref": "#/body"
}, },
"children": [ "children": [],
{
"$ref": "#/texts/1"
},
{
"$ref": "#/texts/2"
}
],
"content_layer": "body", "content_layer": "body",
"label": "title", "label": "title",
"prov": [], "prov": [],
@ -84,7 +92,7 @@
{ {
"self_ref": "#/texts/1", "self_ref": "#/texts/1",
"parent": { "parent": {
"$ref": "#/texts/0" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",
@ -96,33 +104,20 @@
{ {
"self_ref": "#/texts/2", "self_ref": "#/texts/2",
"parent": { "parent": {
"$ref": "#/texts/0" "$ref": "#/body"
}, },
"children": [ "children": [],
{
"$ref": "#/texts/3"
},
{
"$ref": "#/pictures/0"
},
{
"$ref": "#/groups/0"
},
{
"$ref": "#/groups/1"
}
],
"content_layer": "body", "content_layer": "body",
"label": "section_header", "label": "section_header",
"prov": [], "prov": [],
"orig": "Background", "orig": "Background",
"text": "Background", "text": "Background",
"level": 1 "level": 2
}, },
{ {
"self_ref": "#/texts/3", "self_ref": "#/texts/3",
"parent": { "parent": {
"$ref": "#/texts/2" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",
@ -171,7 +166,7 @@
"orig": "First item in ordered list", "orig": "First item in ordered list",
"text": "First item in ordered list", "text": "First item in ordered list",
"enumerated": true, "enumerated": true,
"marker": "1." "marker": "-"
}, },
{ {
"self_ref": "#/texts/7", "self_ref": "#/texts/7",
@ -185,25 +180,10 @@
"orig": "Second item in ordered list", "orig": "Second item in ordered list",
"text": "Second item in ordered list", "text": "Second item in ordered list",
"enumerated": true, "enumerated": true,
"marker": "2." "marker": "-"
}
],
"pictures": [
{
"self_ref": "#/pictures/0",
"parent": {
"$ref": "#/texts/2"
},
"children": [],
"content_layer": "body",
"label": "picture",
"prov": [],
"captions": [],
"references": [],
"footnotes": [],
"annotations": []
} }
], ],
"pictures": [],
"tables": [], "tables": [],
"key_value_items": [], "key_value_items": [],
"form_items": [], "form_items": [],

View File

@ -2,12 +2,10 @@
This is the first paragraph of the introduction. This is the first paragraph of the introduction.
## Background ### Background
Some background information here. Some background information here.
<!-- image -->
- First item in unordered list - First item in unordered list
- Second item in unordered list - Second item in unordered list

View File

@ -1,11 +1,11 @@
item-0 at level 0: unspecified: group _root_ item-0 at level 0: unspecified: group _root_
item-1 at level 1: title: Introduction item-1 at level 1: title: Introduction
item-2 at level 2: text: This is the first paragraph of the introduction. item-2 at level 1: text: This is the first paragraph of the introduction.
item-3 at level 2: section_header: Background item-3 at level 1: section_header: Background
item-4 at level 3: text: Some background information here. item-4 at level 1: text: Some background information here.
item-5 at level 3: list: group list item-5 at level 1: list: group group
item-6 at level 4: list_item: First item in unordered list item-6 at level 2: list_item: First item in unordered list
item-7 at level 4: list_item: Second item in unordered list item-7 at level 2: list_item: Second item in unordered list
item-8 at level 3: ordered_list: group ordered list item-8 at level 1: ordered_list: group group
item-9 at level 4: list_item: First item in ordered list item-9 at level 2: list_item: First item in ordered list
item-10 at level 4: list_item: Second item in ordered list item-10 at level 2: list_item: Second item in ordered list

View File

@ -19,86 +19,13 @@
"children": [ "children": [
{ {
"$ref": "#/texts/0" "$ref": "#/texts/0"
}
],
"content_layer": "body",
"name": "_root_",
"label": "unspecified"
}, },
"groups": [
{
"self_ref": "#/groups/0",
"parent": {
"$ref": "#/texts/2"
},
"children": [
{
"$ref": "#/texts/4"
},
{
"$ref": "#/texts/5"
}
],
"content_layer": "body",
"name": "list",
"label": "list"
},
{
"self_ref": "#/groups/1",
"parent": {
"$ref": "#/texts/2"
},
"children": [
{
"$ref": "#/texts/6"
},
{
"$ref": "#/texts/7"
}
],
"content_layer": "body",
"name": "ordered list",
"label": "ordered_list"
}
],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/body"
},
"children": [
{ {
"$ref": "#/texts/1" "$ref": "#/texts/1"
}, },
{ {
"$ref": "#/texts/2" "$ref": "#/texts/2"
}
],
"content_layer": "body",
"label": "title",
"prov": [],
"orig": "Introduction",
"text": "Introduction"
}, },
{
"self_ref": "#/texts/1",
"parent": {
"$ref": "#/texts/0"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "This is the first paragraph of the introduction.",
"text": "This is the first paragraph of the introduction."
},
{
"self_ref": "#/texts/2",
"parent": {
"$ref": "#/texts/0"
},
"children": [
{ {
"$ref": "#/texts/3" "$ref": "#/texts/3"
}, },
@ -110,16 +37,87 @@
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "_root_",
"label": "unspecified"
},
"groups": [
{
"self_ref": "#/groups/0",
"parent": {
"$ref": "#/body"
},
"children": [
{
"$ref": "#/texts/4"
},
{
"$ref": "#/texts/5"
}
],
"content_layer": "body",
"name": "group",
"label": "list"
},
{
"self_ref": "#/groups/1",
"parent": {
"$ref": "#/body"
},
"children": [
{
"$ref": "#/texts/6"
},
{
"$ref": "#/texts/7"
}
],
"content_layer": "body",
"name": "group",
"label": "ordered_list"
}
],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "title",
"prov": [],
"orig": "Introduction",
"text": "Introduction"
},
{
"self_ref": "#/texts/1",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "This is the first paragraph of the introduction.",
"text": "This is the first paragraph of the introduction."
},
{
"self_ref": "#/texts/2",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "section_header", "label": "section_header",
"prov": [], "prov": [],
"orig": "Background", "orig": "Background",
"text": "Background", "text": "Background",
"level": 1 "level": 2
}, },
{ {
"self_ref": "#/texts/3", "self_ref": "#/texts/3",
"parent": { "parent": {
"$ref": "#/texts/2" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",
@ -168,7 +166,7 @@
"orig": "First item in ordered list", "orig": "First item in ordered list",
"text": "First item in ordered list", "text": "First item in ordered list",
"enumerated": true, "enumerated": true,
"marker": "1." "marker": "-"
}, },
{ {
"self_ref": "#/texts/7", "self_ref": "#/texts/7",
@ -182,7 +180,7 @@
"orig": "Second item in ordered list", "orig": "Second item in ordered list",
"text": "Second item in ordered list", "text": "Second item in ordered list",
"enumerated": true, "enumerated": true,
"marker": "2." "marker": "-"
} }
], ],
"pictures": [], "pictures": [],

View File

@ -2,7 +2,7 @@
This is the first paragraph of the introduction. This is the first paragraph of the introduction.
## Background ### Background
Some background information here. Some background information here.

View File

@ -1,20 +1,20 @@
item-0 at level 0: unspecified: group _root_ item-0 at level 0: unspecified: group _root_
item-1 at level 1: title: Example Document item-1 at level 1: title: Example Document
item-2 at level 2: section_header: Introduction item-2 at level 1: section_header: Introduction
item-3 at level 3: text: This is the first paragraph of the introduction. item-3 at level 1: text: This is the first paragraph of the introduction.
item-4 at level 2: section_header: Background item-4 at level 1: section_header: Background
item-5 at level 3: text: Some background information here. item-5 at level 1: text: Some background information here.
item-6 at level 3: list: group list item-6 at level 1: list: group group
item-7 at level 4: list_item: First item in unordered list item-7 at level 2: list_item: First item in unordered list Nested item 1 Nested item 2
item-8 at level 5: list: group list item-8 at level 2: list: group group
item-9 at level 6: list_item: Nested item 1 item-9 at level 3: list_item: Nested item 1
item-10 at level 6: list_item: Nested item 2 item-10 at level 3: list_item: Nested item 2
item-11 at level 4: list_item: Second item in unordered list item-11 at level 2: list_item: Second item in unordered list
item-12 at level 3: ordered_list: group ordered list item-12 at level 1: ordered_list: group group
item-13 at level 4: list_item: First item in ordered list item-13 at level 2: list_item: First item in ordered list Nested ordered item 1 Nested ordered item 2
item-14 at level 5: ordered_list: group ordered list item-14 at level 2: ordered_list: group group
item-15 at level 6: list_item: Nested ordered item 1 item-15 at level 3: list_item: Nested ordered item 1
item-16 at level 6: list_item: Nested ordered item 2 item-16 at level 3: list_item: Nested ordered item 2
item-17 at level 4: list_item: Second item in ordered list item-17 at level 2: list_item: Second item in ordered list
item-18 at level 2: section_header: Data Table item-18 at level 1: section_header: Data Table
item-19 at level 3: table with [4x3] item-19 at level 1: table with [4x3]

View File

@ -19,6 +19,30 @@
"children": [ "children": [
{ {
"$ref": "#/texts/0" "$ref": "#/texts/0"
},
{
"$ref": "#/texts/1"
},
{
"$ref": "#/texts/2"
},
{
"$ref": "#/texts/3"
},
{
"$ref": "#/texts/4"
},
{
"$ref": "#/groups/0"
},
{
"$ref": "#/groups/2"
},
{
"$ref": "#/texts/13"
},
{
"$ref": "#/tables/0"
} }
], ],
"content_layer": "body", "content_layer": "body",
@ -29,24 +53,27 @@
{ {
"self_ref": "#/groups/0", "self_ref": "#/groups/0",
"parent": { "parent": {
"$ref": "#/texts/3" "$ref": "#/body"
}, },
"children": [ "children": [
{ {
"$ref": "#/texts/5" "$ref": "#/texts/5"
}, },
{
"$ref": "#/groups/1"
},
{ {
"$ref": "#/texts/8" "$ref": "#/texts/8"
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
"self_ref": "#/groups/1", "self_ref": "#/groups/1",
"parent": { "parent": {
"$ref": "#/texts/5" "$ref": "#/groups/0"
}, },
"children": [ "children": [
{ {
@ -57,30 +84,33 @@
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
"self_ref": "#/groups/2", "self_ref": "#/groups/2",
"parent": { "parent": {
"$ref": "#/texts/3" "$ref": "#/body"
}, },
"children": [ "children": [
{ {
"$ref": "#/texts/9" "$ref": "#/texts/9"
}, },
{
"$ref": "#/groups/3"
},
{ {
"$ref": "#/texts/12" "$ref": "#/texts/12"
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "ordered list", "name": "group",
"label": "ordered_list" "label": "ordered_list"
}, },
{ {
"self_ref": "#/groups/3", "self_ref": "#/groups/3",
"parent": { "parent": {
"$ref": "#/texts/9" "$ref": "#/groups/2"
}, },
"children": [ "children": [
{ {
@ -91,7 +121,7 @@
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "ordered list", "name": "group",
"label": "ordered_list" "label": "ordered_list"
} }
], ],
@ -101,17 +131,7 @@
"parent": { "parent": {
"$ref": "#/body" "$ref": "#/body"
}, },
"children": [ "children": [],
{
"$ref": "#/texts/1"
},
{
"$ref": "#/texts/3"
},
{
"$ref": "#/texts/13"
}
],
"content_layer": "body", "content_layer": "body",
"label": "title", "label": "title",
"prov": [], "prov": [],
@ -121,24 +141,20 @@
{ {
"self_ref": "#/texts/1", "self_ref": "#/texts/1",
"parent": { "parent": {
"$ref": "#/texts/0" "$ref": "#/body"
}, },
"children": [ "children": [],
{
"$ref": "#/texts/2"
}
],
"content_layer": "body", "content_layer": "body",
"label": "section_header", "label": "section_header",
"prov": [], "prov": [],
"orig": "Introduction", "orig": "Introduction",
"text": "Introduction", "text": "Introduction",
"level": 1 "level": 2
}, },
{ {
"self_ref": "#/texts/2", "self_ref": "#/texts/2",
"parent": { "parent": {
"$ref": "#/texts/1" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",
@ -150,30 +166,20 @@
{ {
"self_ref": "#/texts/3", "self_ref": "#/texts/3",
"parent": { "parent": {
"$ref": "#/texts/0" "$ref": "#/body"
}, },
"children": [ "children": [],
{
"$ref": "#/texts/4"
},
{
"$ref": "#/groups/0"
},
{
"$ref": "#/groups/2"
}
],
"content_layer": "body", "content_layer": "body",
"label": "section_header", "label": "section_header",
"prov": [], "prov": [],
"orig": "Background", "orig": "Background",
"text": "Background", "text": "Background",
"level": 1 "level": 2
}, },
{ {
"self_ref": "#/texts/4", "self_ref": "#/texts/4",
"parent": { "parent": {
"$ref": "#/texts/3" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",
@ -187,16 +193,12 @@
"parent": { "parent": {
"$ref": "#/groups/0" "$ref": "#/groups/0"
}, },
"children": [ "children": [],
{
"$ref": "#/groups/1"
}
],
"content_layer": "body", "content_layer": "body",
"label": "list_item", "label": "list_item",
"prov": [], "prov": [],
"orig": "First item in unordered list", "orig": "First item in unordered list Nested item 1 Nested item 2",
"text": "First item in unordered list", "text": "First item in unordered list Nested item 1 Nested item 2",
"enumerated": false, "enumerated": false,
"marker": "-" "marker": "-"
}, },
@ -247,18 +249,14 @@
"parent": { "parent": {
"$ref": "#/groups/2" "$ref": "#/groups/2"
}, },
"children": [ "children": [],
{
"$ref": "#/groups/3"
}
],
"content_layer": "body", "content_layer": "body",
"label": "list_item", "label": "list_item",
"prov": [], "prov": [],
"orig": "First item in ordered list", "orig": "First item in ordered list Nested ordered item 1 Nested ordered item 2",
"text": "First item in ordered list", "text": "First item in ordered list Nested ordered item 1 Nested ordered item 2",
"enumerated": true, "enumerated": true,
"marker": "1" "marker": "-"
}, },
{ {
"self_ref": "#/texts/10", "self_ref": "#/texts/10",
@ -272,7 +270,7 @@
"orig": "Nested ordered item 1", "orig": "Nested ordered item 1",
"text": "Nested ordered item 1", "text": "Nested ordered item 1",
"enumerated": true, "enumerated": true,
"marker": "1." "marker": "-"
}, },
{ {
"self_ref": "#/texts/11", "self_ref": "#/texts/11",
@ -286,7 +284,7 @@
"orig": "Nested ordered item 2", "orig": "Nested ordered item 2",
"text": "Nested ordered item 2", "text": "Nested ordered item 2",
"enumerated": true, "enumerated": true,
"marker": "2." "marker": "-"
}, },
{ {
"self_ref": "#/texts/12", "self_ref": "#/texts/12",
@ -300,24 +298,20 @@
"orig": "Second item in ordered list", "orig": "Second item in ordered list",
"text": "Second item in ordered list", "text": "Second item in ordered list",
"enumerated": true, "enumerated": true,
"marker": "2." "marker": "-"
}, },
{ {
"self_ref": "#/texts/13", "self_ref": "#/texts/13",
"parent": { "parent": {
"$ref": "#/texts/0" "$ref": "#/body"
}, },
"children": [ "children": [],
{
"$ref": "#/tables/0"
}
],
"content_layer": "body", "content_layer": "body",
"label": "section_header", "label": "section_header",
"prov": [], "prov": [],
"orig": "Data Table", "orig": "Data Table",
"text": "Data Table", "text": "Data Table",
"level": 1 "level": 2
} }
], ],
"pictures": [], "pictures": [],
@ -325,7 +319,7 @@
{ {
"self_ref": "#/tables/0", "self_ref": "#/tables/0",
"parent": { "parent": {
"$ref": "#/texts/13" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",

View File

@ -1,24 +1,24 @@
# Example Document # Example Document
## Introduction ### Introduction
This is the first paragraph of the introduction. This is the first paragraph of the introduction.
## Background ### Background
Some background information here. Some background information here.
- First item in unordered list - First item in unordered list Nested item 1 Nested item 2
- Nested item 1 - Nested item 1
- Nested item 2 - Nested item 2
- Second item in unordered list - Second item in unordered list
1. First item in ordered list 1. First item in ordered list Nested ordered item 1 Nested ordered item 2
1. Nested ordered item 1 1. Nested ordered item 1
2. Nested ordered item 2 2. Nested ordered item 2
2. Second item in ordered list 2. Second item in ordered list
## Data Table ### Data Table
| Header 1 | Header 2 | Header 3 | | Header 1 | Header 2 | Header 3 |
|--------------|--------------|--------------| |--------------|--------------|--------------|

View File

@ -1,3 +1,3 @@
item-0 at level 0: unspecified: group _root_ item-0 at level 0: unspecified: group _root_
item-1 at level 1: title: Data Table with Rowspan and Colspan item-1 at level 1: title: Data Table with Rowspan and Colspan
item-2 at level 2: table with [4x3] item-2 at level 1: table with [4x3]

View File

@ -19,6 +19,9 @@
"children": [ "children": [
{ {
"$ref": "#/texts/0" "$ref": "#/texts/0"
},
{
"$ref": "#/tables/0"
} }
], ],
"content_layer": "body", "content_layer": "body",
@ -32,11 +35,7 @@
"parent": { "parent": {
"$ref": "#/body" "$ref": "#/body"
}, },
"children": [ "children": [],
{
"$ref": "#/tables/0"
}
],
"content_layer": "body", "content_layer": "body",
"label": "title", "label": "title",
"prov": [], "prov": [],
@ -49,7 +48,7 @@
{ {
"self_ref": "#/tables/0", "self_ref": "#/tables/0",
"parent": { "parent": {
"$ref": "#/texts/0" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",

View File

@ -1,3 +1,3 @@
item-0 at level 0: unspecified: group _root_ item-0 at level 0: unspecified: group _root_
item-1 at level 1: title: Omitted html and body tags item-1 at level 1: title: Omitted html and body tags
item-2 at level 2: table with [4x3] item-2 at level 1: table with [4x3]

View File

@ -19,6 +19,9 @@
"children": [ "children": [
{ {
"$ref": "#/texts/0" "$ref": "#/texts/0"
},
{
"$ref": "#/tables/0"
} }
], ],
"content_layer": "body", "content_layer": "body",
@ -32,11 +35,7 @@
"parent": { "parent": {
"$ref": "#/body" "$ref": "#/body"
}, },
"children": [ "children": [],
{
"$ref": "#/tables/0"
}
],
"content_layer": "body", "content_layer": "body",
"label": "title", "label": "title",
"prov": [], "prov": [],
@ -49,7 +48,7 @@
{ {
"self_ref": "#/tables/0", "self_ref": "#/tables/0",
"parent": { "parent": {
"$ref": "#/texts/0" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",

View File

@ -5,6 +5,7 @@ This is another div with text.
This is a regular paragraph. This is a regular paragraph.
This is a third div This is a third div
with a new line. with a new line.
Heading for the details element Heading for the details element

View File

@ -1,22 +1,24 @@
item-0 at level 0: unspecified: group _root_ item-0 at level 0: unspecified: group _root_
item-1 at level 1: list: group list item-1 at level 1: list: group group
item-2 at level 2: list_item: Asia item-2 at level 2: list_item: Asia China Japan Thailand
item-3 at level 3: list: group list item-3 at level 2: list: group group
item-4 at level 4: list_item: China item-4 at level 3: list_item: China
item-5 at level 4: list_item: Japan item-5 at level 3: list_item: Japan
item-6 at level 4: list_item: Thailand item-6 at level 3: list_item: Thailand
item-7 at level 2: list_item: Europe item-7 at level 2: list_item: Europe UK Germany Switzerland Bern Aargau Italy Piedmont Liguria
item-8 at level 3: list: group list item-8 at level 2: list: group group
item-9 at level 4: list_item: UK item-9 at level 3: list_item: UK
item-10 at level 4: list_item: Germany item-10 at level 3: list_item: Germany
item-11 at level 4: list_item: Switzerland item-11 at level 3: list_item: Switzerland Bern Aargau
item-12 at level 5: list: group list item-12 at level 3: list: group group
item-13 at level 6: list: group list item-13 at level 4: list_item: Bern Aargau
item-14 at level 7: list_item: Bern item-14 at level 4: list: group group
item-15 at level 7: list_item: Aargau item-15 at level 5: list_item: Bern
item-16 at level 4: list_item: Italy item-16 at level 5: list_item: Aargau
item-17 at level 5: list: group list item-17 at level 3: list_item: Italy Piedmont Liguria
item-18 at level 6: list: group list item-18 at level 3: list: group group
item-19 at level 7: list_item: Piedmont item-19 at level 4: list_item: Piedmont Liguria
item-20 at level 7: list_item: Liguria item-20 at level 4: list: group group
item-21 at level 2: list_item: Africa item-21 at level 5: list_item: Piedmont
item-22 at level 5: list_item: Liguria
item-23 at level 2: list_item: Africa

View File

@ -35,21 +35,27 @@
{ {
"$ref": "#/texts/0" "$ref": "#/texts/0"
}, },
{
"$ref": "#/groups/1"
},
{ {
"$ref": "#/texts/4" "$ref": "#/texts/4"
}, },
{ {
"$ref": "#/texts/13" "$ref": "#/groups/2"
},
{
"$ref": "#/texts/15"
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
"self_ref": "#/groups/1", "self_ref": "#/groups/1",
"parent": { "parent": {
"$ref": "#/texts/0" "$ref": "#/groups/0"
}, },
"children": [ "children": [
{ {
@ -63,13 +69,13 @@
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
"self_ref": "#/groups/2", "self_ref": "#/groups/2",
"parent": { "parent": {
"$ref": "#/texts/4" "$ref": "#/groups/0"
}, },
"children": [ "children": [
{ {
@ -82,25 +88,34 @@
"$ref": "#/texts/7" "$ref": "#/texts/7"
}, },
{ {
"$ref": "#/texts/10" "$ref": "#/groups/3"
},
{
"$ref": "#/texts/11"
},
{
"$ref": "#/groups/5"
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
"self_ref": "#/groups/3", "self_ref": "#/groups/3",
"parent": { "parent": {
"$ref": "#/texts/7" "$ref": "#/groups/2"
}, },
"children": [ "children": [
{
"$ref": "#/texts/8"
},
{ {
"$ref": "#/groups/4" "$ref": "#/groups/4"
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
@ -110,28 +125,31 @@
}, },
"children": [ "children": [
{ {
"$ref": "#/texts/8" "$ref": "#/texts/9"
}, },
{ {
"$ref": "#/texts/9" "$ref": "#/texts/10"
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
"self_ref": "#/groups/5", "self_ref": "#/groups/5",
"parent": { "parent": {
"$ref": "#/texts/10" "$ref": "#/groups/2"
}, },
"children": [ "children": [
{
"$ref": "#/texts/12"
},
{ {
"$ref": "#/groups/6" "$ref": "#/groups/6"
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
}, },
{ {
@ -141,14 +159,14 @@
}, },
"children": [ "children": [
{ {
"$ref": "#/texts/11" "$ref": "#/texts/13"
}, },
{ {
"$ref": "#/texts/12" "$ref": "#/texts/14"
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "list", "name": "group",
"label": "list" "label": "list"
} }
], ],
@ -158,16 +176,12 @@
"parent": { "parent": {
"$ref": "#/groups/0" "$ref": "#/groups/0"
}, },
"children": [ "children": [],
{
"$ref": "#/groups/1"
}
],
"content_layer": "body", "content_layer": "body",
"label": "list_item", "label": "list_item",
"prov": [], "prov": [],
"orig": "Asia", "orig": "Asia China Japan Thailand",
"text": "Asia", "text": "Asia China Japan Thailand",
"enumerated": false, "enumerated": false,
"marker": "-" "marker": "-"
}, },
@ -218,16 +232,12 @@
"parent": { "parent": {
"$ref": "#/groups/0" "$ref": "#/groups/0"
}, },
"children": [ "children": [],
{
"$ref": "#/groups/2"
}
],
"content_layer": "body", "content_layer": "body",
"label": "list_item", "label": "list_item",
"prov": [], "prov": [],
"orig": "Europe", "orig": "Europe UK Germany Switzerland Bern Aargau Italy Piedmont Liguria",
"text": "Europe", "text": "Europe UK Germany Switzerland Bern Aargau Italy Piedmont Liguria",
"enumerated": false, "enumerated": false,
"marker": "-" "marker": "-"
}, },
@ -264,21 +274,31 @@
"parent": { "parent": {
"$ref": "#/groups/2" "$ref": "#/groups/2"
}, },
"children": [ "children": [],
{
"$ref": "#/groups/3"
}
],
"content_layer": "body", "content_layer": "body",
"label": "list_item", "label": "list_item",
"prov": [], "prov": [],
"orig": "Switzerland", "orig": "Switzerland Bern Aargau",
"text": "Switzerland", "text": "Switzerland Bern Aargau",
"enumerated": false, "enumerated": false,
"marker": "-" "marker": "-"
}, },
{ {
"self_ref": "#/texts/8", "self_ref": "#/texts/8",
"parent": {
"$ref": "#/groups/3"
},
"children": [],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "Bern Aargau",
"text": "Bern Aargau",
"enumerated": false,
"marker": "-"
},
{
"self_ref": "#/texts/9",
"parent": { "parent": {
"$ref": "#/groups/4" "$ref": "#/groups/4"
}, },
@ -292,7 +312,7 @@
"marker": "-" "marker": "-"
}, },
{ {
"self_ref": "#/texts/9", "self_ref": "#/texts/10",
"parent": { "parent": {
"$ref": "#/groups/4" "$ref": "#/groups/4"
}, },
@ -306,25 +326,35 @@
"marker": "-" "marker": "-"
}, },
{ {
"self_ref": "#/texts/10", "self_ref": "#/texts/11",
"parent": { "parent": {
"$ref": "#/groups/2" "$ref": "#/groups/2"
}, },
"children": [ "children": [],
{
"$ref": "#/groups/5"
}
],
"content_layer": "body", "content_layer": "body",
"label": "list_item", "label": "list_item",
"prov": [], "prov": [],
"orig": "Italy", "orig": "Italy Piedmont Liguria",
"text": "Italy", "text": "Italy Piedmont Liguria",
"enumerated": false, "enumerated": false,
"marker": "-" "marker": "-"
}, },
{ {
"self_ref": "#/texts/11", "self_ref": "#/texts/12",
"parent": {
"$ref": "#/groups/5"
},
"children": [],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "Piedmont Liguria",
"text": "Piedmont Liguria",
"enumerated": false,
"marker": "-"
},
{
"self_ref": "#/texts/13",
"parent": { "parent": {
"$ref": "#/groups/6" "$ref": "#/groups/6"
}, },
@ -338,7 +368,7 @@
"marker": "-" "marker": "-"
}, },
{ {
"self_ref": "#/texts/12", "self_ref": "#/texts/14",
"parent": { "parent": {
"$ref": "#/groups/6" "$ref": "#/groups/6"
}, },
@ -352,7 +382,7 @@
"marker": "-" "marker": "-"
}, },
{ {
"self_ref": "#/texts/13", "self_ref": "#/texts/15",
"parent": { "parent": {
"$ref": "#/groups/0" "$ref": "#/groups/0"
}, },

View File

@ -1,14 +1,16 @@
- Asia - Asia China Japan Thailand
- China - China
- Japan - Japan
- Thailand - Thailand
- Europe - Europe UK Germany Switzerland Bern Aargau Italy Piedmont Liguria
- UK - UK
- Germany - Germany
- Switzerland - Switzerland Bern Aargau
- Bern Aargau
- Bern - Bern
- Aargau - Aargau
- Italy - Italy Piedmont Liguria
- Piedmont Liguria
- Piedmont - Piedmont
- Liguria - Liguria
- Africa - Africa

View File

@ -2,7 +2,7 @@
Some text Some text
## Famous ducks ### Famous ducks
Here is a table: Here is a table:

View File

@ -1,8 +1,10 @@
## Some heading Content before first heading
### Some heading
This is HTML
- A. first - A. first
- subitem
- B. second - B. second
1. strange
The end! The end!

View File

@ -3,29 +3,64 @@
A list featuring nesting: A list featuring nesting:
- abc - abc
- abc123
- abc1234
- abc12345
- a.
- b.
- abcd1234
- abcd12345
- a.
- b.
- def - def
- def1234
- def12345。
- after one empty line - after one empty line
- foo
- afer two empty lines - afer two empty lines
- bar
- changing symbol - changing symbol
A nested HTML list: A nested HTML list:
- First item - First item
- Second item with subitems: - Second item with subitems: Subitem 1 Subitem 2
- Subitem 1 - Subitem 1
- Subitem 2 - Subitem 2
- Last list item - Last list item
Table nesting apparently not yet suported by HTML backend:
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;Cell&lt;/td&gt;
&lt;td&gt;Nested Table
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;Cell 1&lt;/td&gt;
&lt;&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cell 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cell 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cell 4&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;additional row&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,8 @@
item-0 at level 0: unspecified: group _root_ item-0 at level 0: unspecified: group _root_
item-1 at level 1: title: Title item-1 at level 1: title: Title
item-2 at level 2: section_header: section-1 item-2 at level 1: section_header: section-1
item-3 at level 3: section_header: section-1.1 item-3 at level 1: section_header: section-1.1
item-4 at level 2: section_header: section-2 item-4 at level 1: section_header: section-2
item-5 at level 3: section: group header-3 item-5 at level 1: section_header: section-2.0.1
item-6 at level 4: section_header: section-2.0.1 item-6 at level 1: section_header: section-2.2
item-7 at level 3: section_header: section-2.2 item-7 at level 1: section_header: section-2.3
item-8 at level 3: section_header: section-2.3

View File

@ -19,86 +19,18 @@
"children": [ "children": [
{ {
"$ref": "#/texts/0" "$ref": "#/texts/0"
}
],
"content_layer": "body",
"name": "_root_",
"label": "unspecified"
}, },
"groups": [
{
"self_ref": "#/groups/0",
"parent": {
"$ref": "#/texts/3"
},
"children": [
{
"$ref": "#/texts/4"
}
],
"content_layer": "body",
"name": "header-3",
"label": "section"
}
],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/body"
},
"children": [
{ {
"$ref": "#/texts/1" "$ref": "#/texts/1"
}, },
{
"$ref": "#/texts/3"
}
],
"content_layer": "body",
"label": "title",
"prov": [],
"orig": "Title",
"text": "Title"
},
{
"self_ref": "#/texts/1",
"parent": {
"$ref": "#/texts/0"
},
"children": [
{ {
"$ref": "#/texts/2" "$ref": "#/texts/2"
}
],
"content_layer": "body",
"label": "section_header",
"prov": [],
"orig": "section-1",
"text": "section-1",
"level": 1
}, },
{ {
"self_ref": "#/texts/2", "$ref": "#/texts/3"
"parent": {
"$ref": "#/texts/1"
},
"children": [],
"content_layer": "body",
"label": "section_header",
"prov": [],
"orig": "section-1.1",
"text": "section-1.1",
"level": 2
}, },
{ {
"self_ref": "#/texts/3", "$ref": "#/texts/4"
"parent": {
"$ref": "#/texts/0"
},
"children": [
{
"$ref": "#/groups/0"
}, },
{ {
"$ref": "#/texts/5" "$ref": "#/texts/5"
@ -108,16 +40,66 @@
} }
], ],
"content_layer": "body", "content_layer": "body",
"name": "_root_",
"label": "unspecified"
},
"groups": [],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "title",
"prov": [],
"orig": "Title",
"text": "Title"
},
{
"self_ref": "#/texts/1",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "section_header",
"prov": [],
"orig": "section-1",
"text": "section-1",
"level": 2
},
{
"self_ref": "#/texts/2",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "section_header",
"prov": [],
"orig": "section-1.1",
"text": "section-1.1",
"level": 3
},
{
"self_ref": "#/texts/3",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "section_header", "label": "section_header",
"prov": [], "prov": [],
"orig": "section-2", "orig": "section-2",
"text": "section-2", "text": "section-2",
"level": 1 "level": 2
}, },
{ {
"self_ref": "#/texts/4", "self_ref": "#/texts/4",
"parent": { "parent": {
"$ref": "#/groups/0" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",
@ -125,12 +107,12 @@
"prov": [], "prov": [],
"orig": "section-2.0.1", "orig": "section-2.0.1",
"text": "section-2.0.1", "text": "section-2.0.1",
"level": 3 "level": 4
}, },
{ {
"self_ref": "#/texts/5", "self_ref": "#/texts/5",
"parent": { "parent": {
"$ref": "#/texts/3" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",
@ -138,12 +120,12 @@
"prov": [], "prov": [],
"orig": "section-2.2", "orig": "section-2.2",
"text": "section-2.2", "text": "section-2.2",
"level": 2 "level": 3
}, },
{ {
"self_ref": "#/texts/6", "self_ref": "#/texts/6",
"parent": { "parent": {
"$ref": "#/texts/3" "$ref": "#/body"
}, },
"children": [], "children": [],
"content_layer": "body", "content_layer": "body",
@ -151,7 +133,7 @@
"prov": [], "prov": [],
"orig": "section-2.3", "orig": "section-2.3",
"text": "section-2.3", "text": "section-2.3",
"level": 2 "level": 3
} }
], ],
"pictures": [], "pictures": [],

View File

@ -1,13 +1,13 @@
# Title # Title
## section-1 ### section-1
### section-1.1 #### section-1.1
## section-2 ### section-2
#### section-2.0.1 ##### section-2.0.1
### section-2.2 #### section-2.2
### section-2.3 #### section-2.3

View File

@ -1,458 +1,517 @@
item-0 at level 0: unspecified: group _root_ item-0 at level 0: unspecified: group _root_
item-1 at level 1: section: group header-1 item-1 at level 1: text: Jump to content
item-2 at level 2: section_header: Contents item-2 at level 1: text: Main menu
item-3 at level 3: list: group list item-3 at level 1: text: Main menu
item-4 at level 4: list_item: (Top) item-4 at level 1: text: move to sidebar
item-5 at level 4: list_item: 1 Etymology item-5 at level 1: text: hide
item-6 at level 5: list: group list item-6 at level 1: text: Navigation
item-7 at level 4: list_item: 2 Taxonomy item-7 at level 1: list: group group
item-8 at level 5: list: group list item-8 at level 2: list_item: Main page
item-9 at level 4: list_item: 3 Morphology item-9 at level 2: list_item: Contents
item-10 at level 5: list: group list item-10 at level 2: list_item: Current events
item-11 at level 4: list_item: 4 Distribution and habitat item-11 at level 2: list_item: Random article
item-12 at level 5: list: group list item-12 at level 2: list_item: About Wikipedia
item-13 at level 4: list_item: 5 Behaviour Toggle Behaviour subsection item-13 at level 2: list_item: Contact us
item-14 at level 5: list: group list item-14 at level 1: text: Contribute
item-15 at level 6: list_item: 5.1 Feeding item-15 at level 1: list: group group
item-16 at level 7: list: group list item-16 at level 2: list_item: Help
item-17 at level 6: list_item: 5.2 Breeding item-17 at level 2: list_item: Learn to edit
item-18 at level 7: list: group list item-18 at level 2: list_item: Community portal
item-19 at level 6: list_item: 5.3 Communication item-19 at level 2: list_item: Recent changes
item-20 at level 7: list: group list item-20 at level 2: list_item: Upload file
item-21 at level 6: list_item: 5.4 Predators item-21 at level 1: text: Search
item-22 at level 7: list: group list item-22 at level 1: text: Search
item-23 at level 4: list_item: 6 Relationship with humans Toggle Relationship with humans subsection item-23 at level 1: list: group group
item-24 at level 5: list: group list item-24 at level 1: list: group group
item-25 at level 6: list_item: 6.1 Hunting item-25 at level 2: list_item: Donate
item-26 at level 7: list: group list item-26 at level 1: text: Appearance
item-27 at level 6: list_item: 6.2 Domestication item-27 at level 1: list: group group
item-28 at level 7: list: group list item-28 at level 1: list: group group
item-29 at level 6: list_item: 6.3 Heraldry item-29 at level 2: list_item: Create account
item-30 at level 7: list: group list item-30 at level 2: list_item: Log in
item-31 at level 6: list_item: 6.4 Cultural references item-31 at level 1: text: Personal tools
item-32 at level 7: list: group list item-32 at level 1: list: group group
item-33 at level 4: list_item: 7 See also item-33 at level 2: list_item: Create account
item-34 at level 5: list: group list item-34 at level 2: list_item: Log in
item-35 at level 4: list_item: 8 Notes Toggle Notes subsection item-35 at level 1: text: Pages for logged out editors learn more
item-36 at level 5: list: group list item-36 at level 1: list: group group
item-37 at level 6: list_item: 8.1 Citations item-37 at level 2: list_item: Contributions
item-38 at level 7: list: group list item-38 at level 2: list_item: Talk
item-39 at level 6: list_item: 8.2 Sources item-39 at level 1: section_header: Contents
item-40 at level 7: list: group list item-40 at level 1: text: move to sidebar
item-41 at level 4: list_item: 9 External links item-41 at level 1: text: hide
item-42 at level 5: list: group list item-42 at level 1: list: group group
item-43 at level 1: title: Duck item-43 at level 2: list_item: (Top)
item-44 at level 2: list: group list item-44 at level 2: list_item: 1 Etymology
item-45 at level 3: list_item: Acèh item-45 at level 2: list: group group
item-46 at level 3: list_item: Afrikaans item-46 at level 2: list_item: 2 Taxonomy
item-47 at level 3: list_item: Alemannisch item-47 at level 2: list: group group
item-48 at level 3: list_item: አማርኛ item-48 at level 2: list_item: 3 Morphology
item-49 at level 3: list_item: Ænglisc item-49 at level 2: list: group group
item-50 at level 3: list_item: العربية item-50 at level 2: list_item: 4 Distribution and habitat
item-51 at level 3: list_item: Aragonés item-51 at level 2: list: group group
item-52 at level 3: list_item: ܐܪܡܝܐ item-52 at level 2: list_item: 5 Behaviour Toggle Behaviour sub ... eeding 5.3 Communication 5.4 Predators
item-53 at level 3: list_item: Armãneashti item-53 at level 2: list: group group
item-54 at level 3: list_item: Asturianu item-54 at level 3: list_item: 5.1 Feeding
item-55 at level 3: list_item: Atikamekw item-55 at level 3: list: group group
item-56 at level 3: list_item: Авар item-56 at level 3: list_item: 5.2 Breeding
item-57 at level 3: list_item: Aymar aru item-57 at level 3: list: group group
item-58 at level 3: list_item: تۆرکجه item-58 at level 3: list_item: 5.3 Communication
item-59 at level 3: list_item: Basa Bali item-59 at level 3: list: group group
item-60 at level 3: list_item: বাংলা item-60 at level 3: list_item: 5.4 Predators
item-61 at level 3: list_item: 閩南語 / Bân-lâm-gú item-61 at level 3: list: group group
item-62 at level 3: list_item: Беларуская item-62 at level 2: list_item: 6 Relationship with humans Toggl ... n 6.3 Heraldry 6.4 Cultural references
item-63 at level 3: list_item: Беларуская (тарашкевіца) item-63 at level 2: list: group group
item-64 at level 3: list_item: Bikol Central item-64 at level 3: list_item: 6.1 Hunting
item-65 at level 3: list_item: Български item-65 at level 3: list: group group
item-66 at level 3: list_item: Brezhoneg item-66 at level 3: list_item: 6.2 Domestication
item-67 at level 3: list_item: Буряад item-67 at level 3: list: group group
item-68 at level 3: list_item: Català item-68 at level 3: list_item: 6.3 Heraldry
item-69 at level 3: list_item: Чӑвашла item-69 at level 3: list: group group
item-70 at level 3: list_item: Čeština item-70 at level 3: list_item: 6.4 Cultural references
item-71 at level 3: list_item: ChiShona item-71 at level 3: list: group group
item-72 at level 3: list_item: Cymraeg item-72 at level 2: list_item: 7 See also
item-73 at level 3: list_item: Dagbanli item-73 at level 2: list: group group
item-74 at level 3: list_item: Dansk item-74 at level 2: list_item: 8 Notes Toggle Notes subsection 8.1 Citations 8.2 Sources
item-75 at level 3: list_item: Deitsch item-75 at level 2: list: group group
item-76 at level 3: list_item: Deutsch item-76 at level 3: list_item: 8.1 Citations
item-77 at level 3: list_item: डोटेली item-77 at level 3: list: group group
item-78 at level 3: list_item: Ελληνικά item-78 at level 3: list_item: 8.2 Sources
item-79 at level 3: list_item: Emiliàn e rumagnòl item-79 at level 3: list: group group
item-80 at level 3: list_item: Español item-80 at level 2: list_item: 9 External links
item-81 at level 3: list_item: Esperanto item-81 at level 2: list: group group
item-82 at level 3: list_item: Euskara item-82 at level 1: text: Toggle the table of contents
item-83 at level 3: list_item: فارسی item-83 at level 1: title: Duck
item-84 at level 3: list_item: Français item-84 at level 1: text: 136 languages
item-85 at level 3: list_item: Gaeilge item-85 at level 1: list: group group
item-86 at level 3: list_item: Galego item-86 at level 2: list_item: Acèh
item-87 at level 3: list_item: ГӀалгӀай item-87 at level 2: list_item: Afrikaans
item-88 at level 3: list_item: 贛語 item-88 at level 2: list_item: Alemannisch
item-89 at level 3: list_item: گیلکی item-89 at level 2: list_item: አማርኛ
item-90 at level 3: list_item: 𐌲𐌿𐍄𐌹𐍃𐌺 item-90 at level 2: list_item: Ænglisc
item-91 at level 3: list_item: गोंयची कोंकणी / Gõychi Konknni item-91 at level 2: list_item: العربية
item-92 at level 3: list_item: 客家語 / Hak-kâ-ngî item-92 at level 2: list_item: Aragonés
item-93 at level 3: list_item: 한국어 item-93 at level 2: list_item: ܐܪܡܝܐ
item-94 at level 3: list_item: Hausa item-94 at level 2: list_item: Armãneashti
item-95 at level 3: list_item: Հայերեն item-95 at level 2: list_item: Asturianu
item-96 at level 3: list_item: हिन्दी item-96 at level 2: list_item: Atikamekw
item-97 at level 3: list_item: Hrvatski item-97 at level 2: list_item: Авар
item-98 at level 3: list_item: Ido item-98 at level 2: list_item: Aymar aru
item-99 at level 3: list_item: Bahasa Indonesia item-99 at level 2: list_item: تۆرکجه
item-100 at level 3: list_item: Iñupiatun item-100 at level 2: list_item: Basa Bali
item-101 at level 3: list_item: Íslenska item-101 at level 2: list_item: বাংলা
item-102 at level 3: list_item: Italiano item-102 at level 2: list_item: 閩南語 / Bân-lâm-gú
item-103 at level 3: list_item: עברית item-103 at level 2: list_item: Беларуская
item-104 at level 3: list_item: Jawa item-104 at level 2: list_item: Беларуская (тарашкевіца)
item-105 at level 3: list_item: ಕನ್ನಡ item-105 at level 2: list_item: Bikol Central
item-106 at level 3: list_item: Kapampangan item-106 at level 2: list_item: Български
item-107 at level 3: list_item: ქართული item-107 at level 2: list_item: Brezhoneg
item-108 at level 3: list_item: कॉशुर / کٲشُر item-108 at level 2: list_item: Буряад
item-109 at level 3: list_item: Қазақша item-109 at level 2: list_item: Català
item-110 at level 3: list_item: Ikirundi item-110 at level 2: list_item: Чӑвашла
item-111 at level 3: list_item: Kongo item-111 at level 2: list_item: Čeština
item-112 at level 3: list_item: Kreyòl ayisyen item-112 at level 2: list_item: ChiShona
item-113 at level 3: list_item: Кырык мары item-113 at level 2: list_item: Cymraeg
item-114 at level 3: list_item: ລາວ item-114 at level 2: list_item: Dagbanli
item-115 at level 3: list_item: Latina item-115 at level 2: list_item: Dansk
item-116 at level 3: list_item: Latviešu item-116 at level 2: list_item: Deitsch
item-117 at level 3: list_item: Lietuvių item-117 at level 2: list_item: Deutsch
item-118 at level 3: list_item: Li Niha item-118 at level 2: list_item: डोटेली
item-119 at level 3: list_item: Ligure item-119 at level 2: list_item: Ελληνικά
item-120 at level 3: list_item: Limburgs item-120 at level 2: list_item: Emiliàn e rumagnòl
item-121 at level 3: list_item: Lingála item-121 at level 2: list_item: Español
item-122 at level 3: list_item: Malagasy item-122 at level 2: list_item: Esperanto
item-123 at level 3: list_item: മലയാളം item-123 at level 2: list_item: Euskara
item-124 at level 3: list_item: मराठी item-124 at level 2: list_item: فارسی
item-125 at level 3: list_item: مازِرونی item-125 at level 2: list_item: Français
item-126 at level 3: list_item: Bahasa Melayu item-126 at level 2: list_item: Gaeilge
item-127 at level 3: list_item: ꯃꯤꯇꯩ ꯂꯣꯟ item-127 at level 2: list_item: Galego
item-128 at level 3: list_item: 閩東語 / Mìng-dĕ̤ng-ngṳ̄ item-128 at level 2: list_item: ГӀалгӀай
item-129 at level 3: list_item: Мокшень item-129 at level 2: list_item: 贛語
item-130 at level 3: list_item: Монгол item-130 at level 2: list_item: گیلکی
item-131 at level 3: list_item: မြန်မာဘာသာ item-131 at level 2: list_item: 𐌲𐌿𐍄𐌹𐍃𐌺
item-132 at level 3: list_item: Nederlands item-132 at level 2: list_item: गोंयची कोंकणी / Gõychi Konknni
item-133 at level 3: list_item: Nedersaksies item-133 at level 2: list_item: 客家語 / Hak-kâ-ngî
item-134 at level 3: list_item: नेपाली item-134 at level 2: list_item: 한국어
item-135 at level 3: list_item: नेपाल भाषा item-135 at level 2: list_item: Hausa
item-136 at level 3: list_item: 日本語 item-136 at level 2: list_item: Հայերեն
item-137 at level 3: list_item: Нохчийн item-137 at level 2: list_item: हिन्दी
item-138 at level 3: list_item: Norsk nynorsk item-138 at level 2: list_item: Hrvatski
item-139 at level 3: list_item: Occitan item-139 at level 2: list_item: Ido
item-140 at level 3: list_item: Oromoo item-140 at level 2: list_item: Bahasa Indonesia
item-141 at level 3: list_item: ਪੰਜਾਬੀ item-141 at level 2: list_item: Iñupiatun
item-142 at level 3: list_item: Picard item-142 at level 2: list_item: Íslenska
item-143 at level 3: list_item: Plattdüütsch item-143 at level 2: list_item: Italiano
item-144 at level 3: list_item: Polski item-144 at level 2: list_item: עברית
item-145 at level 3: list_item: Português item-145 at level 2: list_item: Jawa
item-146 at level 3: list_item: Qırımtatarca item-146 at level 2: list_item: ಕನ್ನಡ
item-147 at level 3: list_item: Română item-147 at level 2: list_item: Kapampangan
item-148 at level 3: list_item: Русский item-148 at level 2: list_item: ქართული
item-149 at level 3: list_item: Саха тыла item-149 at level 2: list_item: कॉशुर / کٲشُر
item-150 at level 3: list_item: ᱥᱟᱱᱛᱟᱲᱤ item-150 at level 2: list_item: Қазақша
item-151 at level 3: list_item: Sardu item-151 at level 2: list_item: Ikirundi
item-152 at level 3: list_item: Scots item-152 at level 2: list_item: Kongo
item-153 at level 3: list_item: Seeltersk item-153 at level 2: list_item: Kreyòl ayisyen
item-154 at level 3: list_item: Shqip item-154 at level 2: list_item: Кырык мары
item-155 at level 3: list_item: Sicilianu item-155 at level 2: list_item: ລາວ
item-156 at level 3: list_item: සිංහල item-156 at level 2: list_item: Latina
item-157 at level 3: list_item: Simple English item-157 at level 2: list_item: Latviešu
item-158 at level 3: list_item: سنڌي item-158 at level 2: list_item: Lietuvių
item-159 at level 3: list_item: کوردی item-159 at level 2: list_item: Li Niha
item-160 at level 3: list_item: Српски / srpski item-160 at level 2: list_item: Ligure
item-161 at level 3: list_item: Srpskohrvatski / српскохрватски item-161 at level 2: list_item: Limburgs
item-162 at level 3: list_item: Sunda item-162 at level 2: list_item: Lingála
item-163 at level 3: list_item: Svenska item-163 at level 2: list_item: Malagasy
item-164 at level 3: list_item: Tagalog item-164 at level 2: list_item: മലയാളം
item-165 at level 3: list_item: தமிழ் item-165 at level 2: list_item: मराठी
item-166 at level 3: list_item: Taqbaylit item-166 at level 2: list_item: مازِرونی
item-167 at level 3: list_item: Татарча / tatarça item-167 at level 2: list_item: Bahasa Melayu
item-168 at level 3: list_item: ไทย item-168 at level 2: list_item: ꯃꯤꯇꯩ ꯂꯣꯟ
item-169 at level 3: list_item: Türkçe item-169 at level 2: list_item: 閩東語 / Mìng-dĕ̤ng-ngṳ̄
item-170 at level 3: list_item: Українська item-170 at level 2: list_item: Мокшень
item-171 at level 3: list_item: ئۇيغۇرچە / Uyghurche item-171 at level 2: list_item: Монгол
item-172 at level 3: list_item: Vahcuengh item-172 at level 2: list_item: မြန်မာဘာသာ
item-173 at level 3: list_item: Tiếng Việt item-173 at level 2: list_item: Nederlands
item-174 at level 3: list_item: Walon item-174 at level 2: list_item: Nedersaksies
item-175 at level 3: list_item: 文言 item-175 at level 2: list_item: नेपाली
item-176 at level 3: list_item: Winaray item-176 at level 2: list_item: नेपाल भाषा
item-177 at level 3: list_item: 吴语 item-177 at level 2: list_item: 日本語
item-178 at level 3: list_item: 粵語 item-178 at level 2: list_item: Нохчийн
item-179 at level 3: list_item: Žemaitėška item-179 at level 2: list_item: Norsk nynorsk
item-180 at level 3: list_item: 中文 item-180 at level 2: list_item: Occitan
item-181 at level 2: list: group list item-181 at level 2: list_item: Oromoo
item-182 at level 3: list_item: Article item-182 at level 2: list_item: ਪੰਜਾਬੀ
item-183 at level 3: list_item: Talk item-183 at level 2: list_item: Picard
item-184 at level 2: list: group list item-184 at level 2: list_item: Plattdüütsch
item-185 at level 2: list: group list item-185 at level 2: list_item: Polski
item-186 at level 3: list_item: Read item-186 at level 2: list_item: Português
item-187 at level 3: list_item: View source item-187 at level 2: list_item: Qırımtatarca
item-188 at level 3: list_item: View history item-188 at level 2: list_item: Română
item-189 at level 2: text: Tools item-189 at level 2: list_item: Русский
item-190 at level 2: text: Actions item-190 at level 2: list_item: Саха тыла
item-191 at level 2: list: group list item-191 at level 2: list_item: ᱥᱟᱱᱛᱟᱲᱤ
item-192 at level 3: list_item: Read item-192 at level 2: list_item: Sardu
item-193 at level 3: list_item: View source item-193 at level 2: list_item: Scots
item-194 at level 3: list_item: View history item-194 at level 2: list_item: Seeltersk
item-195 at level 2: text: General item-195 at level 2: list_item: Shqip
item-196 at level 2: list: group list item-196 at level 2: list_item: Sicilianu
item-197 at level 3: list_item: What links here item-197 at level 2: list_item: සිංහල
item-198 at level 3: list_item: Related changes item-198 at level 2: list_item: Simple English
item-199 at level 3: list_item: Upload file item-199 at level 2: list_item: سنڌي
item-200 at level 3: list_item: Special pages item-200 at level 2: list_item: کوردی
item-201 at level 3: list_item: Permanent link item-201 at level 2: list_item: Српски / srpski
item-202 at level 3: list_item: Page information item-202 at level 2: list_item: Srpskohrvatski / српскохрватски
item-203 at level 3: list_item: Cite this page item-203 at level 2: list_item: Sunda
item-204 at level 3: list_item: Get shortened URL item-204 at level 2: list_item: Svenska
item-205 at level 3: list_item: Download QR code item-205 at level 2: list_item: Tagalog
item-206 at level 3: list_item: Wikidata item item-206 at level 2: list_item: தமிழ்
item-207 at level 2: text: Print/export item-207 at level 2: list_item: Taqbaylit
item-208 at level 2: list: group list item-208 at level 2: list_item: Татарча / tatarça
item-209 at level 3: list_item: Download as PDF item-209 at level 2: list_item: ไทย
item-210 at level 3: list_item: Printable version item-210 at level 2: list_item: Türkçe
item-211 at level 2: text: In other projects item-211 at level 2: list_item: Українська
item-212 at level 2: list: group list item-212 at level 2: list_item: ئۇيغۇرچە / Uyghurche
item-213 at level 3: list_item: Wikimedia Commons item-213 at level 2: list_item: Vahcuengh
item-214 at level 3: list_item: Wikiquote item-214 at level 2: list_item: Tiếng Việt
item-215 at level 2: text: Appearance item-215 at level 2: list_item: Walon
item-216 at level 2: picture item-216 at level 2: list_item: 文言
item-217 at level 2: text: From Wikipedia, the free encyclopedia item-217 at level 2: list_item: Winaray
item-218 at level 2: text: Common name for many species of bird item-218 at level 2: list_item: 吴语
item-219 at level 2: text: This article is about the bird. ... as a food, see . For other uses, see . item-219 at level 2: list_item: 粵語
item-220 at level 2: text: "Duckling" redirects here. For other uses, see . item-220 at level 2: list_item: Žemaitėška
item-221 at level 2: table with [13x2] item-221 at level 2: list_item: 中文
item-222 at level 2: text: Duck is the common name for nume ... und in both fresh water and sea water. item-222 at level 1: text: Edit links
item-223 at level 2: text: Ducks are sometimes confused wit ... divers, grebes, gallinules and coots. item-223 at level 1: list: group group
item-224 at level 2: section_header: Etymology item-224 at level 2: list_item: Article
item-225 at level 3: text: The word duck comes from Old Eng ... h duiken and German tauchen 'to dive'. item-225 at level 2: list_item: Talk
item-226 at level 3: picture item-226 at level 1: text: English
item-226 at level 4: caption: Pacific black duck displaying the characteristic upending "duck" item-227 at level 1: list: group group
item-227 at level 3: text: This word replaced Old English e ... nskrit ātí 'water bird', among others. item-228 at level 1: list: group group
item-228 at level 3: text: A duckling is a young duck in do ... , is sometimes labelled as a duckling. item-229 at level 2: list_item: Read
item-229 at level 3: text: A male is called a drake and the ... a duck, or in ornithology a hen.[3][4] item-230 at level 2: list_item: View source
item-230 at level 3: picture item-231 at level 2: list_item: View history
item-230 at level 4: caption: Male mallard. item-232 at level 1: text: Tools
item-231 at level 3: picture item-233 at level 1: text: Tools
item-231 at level 4: caption: Wood ducks. item-234 at level 1: text: move to sidebar
item-232 at level 2: section_header: Taxonomy item-235 at level 1: text: hide
item-233 at level 3: text: All ducks belong to the biologic ... ationships between various species.[9] item-236 at level 1: text: Actions
item-234 at level 3: picture item-237 at level 1: list: group group
item-234 at level 4: caption: Mallard landing in approach item-238 at level 2: list_item: Read
item-235 at level 3: text: In most modern classifications, ... all size and stiff, upright tails.[14] item-239 at level 2: list_item: View source
item-236 at level 3: text: A number of other species called ... shelducks in the tribe Tadornini.[15] item-240 at level 2: list_item: View history
item-237 at level 2: section_header: Morphology item-241 at level 1: text: General
item-238 at level 3: picture item-242 at level 1: list: group group
item-238 at level 4: caption: Male Mandarin duck item-243 at level 2: list_item: What links here
item-239 at level 3: text: The overall body plan of ducks i ... is moult typically precedes migration. item-244 at level 2: list_item: Related changes
item-240 at level 3: text: The drakes of northern species o ... rkscrew shaped vagina to prevent rape. item-245 at level 2: list_item: Upload file
item-241 at level 2: section_header: Distribution and habitat item-246 at level 2: list_item: Special pages
item-242 at level 3: picture item-247 at level 2: list_item: Permanent link
item-242 at level 4: caption: Flying steamer ducks in Ushuaia, Argentina item-248 at level 2: list_item: Page information
item-243 at level 3: text: Ducks have a cosmopolitan distri ... endemic to such far-flung islands.[21] item-249 at level 2: list_item: Cite this page
item-244 at level 3: picture item-250 at level 2: list_item: Get shortened URL
item-244 at level 4: caption: Female mallard in Cornwall, England item-251 at level 2: list_item: Download QR code
item-245 at level 3: text: Some duck species, mainly those ... t form after localised heavy rain.[23] item-252 at level 2: list_item: Wikidata item
item-246 at level 2: section_header: Behaviour item-253 at level 1: text: Print/export
item-247 at level 3: section_header: Feeding item-254 at level 1: list: group group
item-248 at level 4: picture item-255 at level 2: list_item: Download as PDF
item-248 at level 5: caption: Pecten along the bill item-256 at level 2: list_item: Printable version
item-249 at level 4: picture item-257 at level 1: text: In other projects
item-249 at level 5: caption: Mallard duckling preening item-258 at level 1: list: group group
item-250 at level 4: text: Ducks eat food sources such as g ... amphibians, worms, and small molluscs. item-259 at level 2: list_item: Wikimedia Commons
item-251 at level 4: text: Dabbling ducks feed on the surfa ... thers and to hold slippery food items. item-260 at level 2: list_item: Wikiquote
item-252 at level 4: text: Diving ducks and sea ducks forag ... ave more difficulty taking off to fly. item-261 at level 1: text: Appearance
item-253 at level 4: text: A few specialized species such a ... apted to catch and swallow large fish. item-262 at level 1: text: move to sidebar
item-254 at level 4: text: The others have the characterist ... e nostrils come out through hard horn. item-263 at level 1: text: hide
item-255 at level 4: text: The Guardian published an articl ... the ducks and pollutes waterways.[25] item-264 at level 1: text: From Wikipedia, the free encyclopedia
item-256 at level 3: section_header: Breeding item-265 at level 1: text: (Redirected from Duckling)
item-257 at level 4: picture item-266 at level 1: text: Common name for many species of bird
item-257 at level 5: caption: A Muscovy duckling item-267 at level 1: text: This article is about the bird. ... other uses, see Duck (disambiguation).
item-258 at level 4: text: Ducks generally only have one pa ... st and led her ducklings to water.[28] item-268 at level 1: text: "Duckling" redirects here. For other uses, see Duckling (disambiguation).
item-259 at level 3: section_header: Communication item-269 at level 1: table with [13x2]
item-260 at level 4: text: Female mallard ducks (as well as ... laying calls or quieter contact calls. item-270 at level 1: text: Duck is the common name for nume ... und in both fresh water and sea water.
item-261 at level 4: text: A common urban legend claims tha ... annel television show MythBusters.[32] item-271 at level 1: text: Ducks are sometimes confused wit ... divers, grebes, gallinules and coots.
item-262 at level 3: section_header: Predators item-272 at level 1: section_header: Etymology
item-263 at level 4: picture item-273 at level 1: text: The word duck comes from Old Eng ... h duiken and German tauchen 'to dive'.
item-263 at level 5: caption: Ringed teal item-274 at level 1: text: Pacific black duck displaying the characteristic upending "duck"
item-264 at level 4: text: Ducks have many predators. Duckl ... or large birds, such as hawks or owls. item-275 at level 1: text: This word replaced Old English e ... nskrit ātí 'water bird', among others.
item-265 at level 4: text: Adult ducks are fast fliers, but ... its speed and strength to catch ducks. item-276 at level 1: text: A duckling is a young duck in do ... , is sometimes labelled as a duckling.
item-266 at level 2: section_header: Relationship with humans item-277 at level 1: text: A male is called a drake and the ... a duck, or in ornithology a hen.[3][4]
item-267 at level 3: section_header: Hunting item-278 at level 1: text: Male mallard.
item-268 at level 4: text: Humans have hunted ducks since p ... evidence of this is uncommon.[35][42] item-279 at level 1: text: Wood ducks.
item-269 at level 4: text: In many areas, wild ducks (inclu ... inated by pollutants such as PCBs.[44] item-280 at level 1: section_header: Taxonomy
item-270 at level 3: section_header: Domestication item-281 at level 1: text: All ducks belong to the biologic ... ationships between various species.[9]
item-271 at level 4: picture item-282 at level 1: text: Mallard landing in approach
item-271 at level 5: caption: Indian Runner ducks, a common breed of domestic ducks item-283 at level 1: text: In most modern classifications, ... all size and stiff, upright tails.[14]
item-272 at level 4: text: Ducks have many economic uses, b ... it weighs less than 1 kg (2.2 lb).[48] item-284 at level 1: text: A number of other species called ... shelducks in the tribe Tadornini.[15]
item-273 at level 3: section_header: Heraldry item-285 at level 1: section_header: Morphology
item-274 at level 4: picture item-286 at level 1: text: Male Mandarin duck
item-274 at level 5: caption: Three black-colored ducks in the coat of arms of Maaninka[49] item-287 at level 1: text: The overall body plan of ducks i ... is moult typically precedes migration.
item-275 at level 4: text: Ducks appear on several coats of ... the coat of arms of Föglö (Åland).[51] item-288 at level 1: text: The drakes of northern species o ... rkscrew shaped vagina to prevent rape.
item-276 at level 3: section_header: Cultural references item-289 at level 1: section_header: Distribution and habitat
item-277 at level 4: text: In 2002, psychologist Richard Wi ... 54] and was made into a movie in 1986. item-290 at level 1: text: See also: List of Anseriformes by population
item-278 at level 4: text: The 1992 Disney film The Mighty ... Ducks minor league baseball team.[55] item-291 at level 1: text: Flying steamer ducks in Ushuaia, Argentina
item-279 at level 2: section_header: See also item-292 at level 1: text: Ducks have a cosmopolitan distri ... endemic to such far-flung islands.[21]
item-280 at level 3: list: group list item-293 at level 1: text: Female mallard in Cornwall, England
item-281 at level 4: list_item: Birds portal item-294 at level 1: text: Some duck species, mainly those ... t form after localised heavy rain.[23]
item-282 at level 3: list: group list item-295 at level 1: section_header: Behaviour
item-283 at level 4: list_item: Domestic duck item-296 at level 1: section_header: Feeding
item-284 at level 4: list_item: Duck as food item-297 at level 1: text: Pecten along the bill
item-285 at level 4: list_item: Duck test item-298 at level 1: text: Mallard duckling preening
item-286 at level 4: list_item: Duck breeds item-299 at level 1: text: Ducks eat food sources such as g ... amphibians, worms, and small molluscs.
item-287 at level 4: list_item: Fictional ducks item-300 at level 1: text: Dabbling ducks feed on the surfa ... thers and to hold slippery food items.
item-288 at level 4: list_item: Rubber duck item-301 at level 1: text: Diving ducks and sea ducks forag ... ave more difficulty taking off to fly.
item-289 at level 2: section_header: Notes item-302 at level 1: text: A few specialized species such a ... apted to catch and swallow large fish.
item-290 at level 3: section_header: Citations item-303 at level 1: text: The others have the characterist ... e nostrils come out through hard horn.
item-291 at level 4: ordered_list: group ordered list item-304 at level 1: text: The Guardian published an articl ... the ducks and pollutes waterways.[25]
item-292 at level 5: list_item: ^ "Duckling". The American Herit ... n Company. 2006. Retrieved 2015-05-22. item-305 at level 1: section_header: Breeding
item-293 at level 5: list_item: ^ "Duckling". Kernerman English ... Ltd. 20002006. Retrieved 2015-05-22. item-306 at level 1: text: A Muscovy duckling
item-294 at level 5: list_item: ^ Dohner, Janet Vorwald (2001). ... University Press. ISBN 978-0300138139. item-307 at level 1: text: Ducks generally only have one pa ... st and led her ducklings to water.[28]
item-295 at level 5: list_item: ^ Visca, Curt; Visca, Kelley (20 ... Publishing Group. ISBN 9780823961566. item-308 at level 1: section_header: Communication
item-296 at level 5: list_item: ^ a b c d Carboneras 1992, p. 536. item-309 at level 1: text: Female mallard ducks (as well as ... laying calls or quieter contact calls.
item-297 at level 5: list_item: ^ Livezey 1986, pp. 737738. item-310 at level 1: text: A common urban legend claims tha ... annel television show MythBusters.[32]
item-298 at level 5: list_item: ^ Madsen, McHugh & de Kloet 1988, p. 452. item-311 at level 1: section_header: Predators
item-299 at level 5: list_item: ^ Donne-Goussé, Laudet & Hänni 2002, pp. 353354. item-312 at level 1: text: Ringed teal
item-300 at level 5: list_item: ^ a b c d e f Carboneras 1992, p. 540. item-313 at level 1: text: Ducks have many predators. Duckl ... or large birds, such as hawks or owls.
item-301 at level 5: list_item: ^ Elphick, Dunning & Sibley 2001, p. 191. item-314 at level 1: text: Adult ducks are fast fliers, but ... its speed and strength to catch ducks.
item-302 at level 5: list_item: ^ Kear 2005, p. 448. item-315 at level 1: section_header: Relationship with humans
item-303 at level 5: list_item: ^ Kear 2005, p. 622623. item-316 at level 1: section_header: Hunting
item-304 at level 5: list_item: ^ Kear 2005, p. 686. item-317 at level 1: text: Main article: Waterfowl hunting
item-305 at level 5: list_item: ^ Elphick, Dunning & Sibley 2001, p. 193. item-318 at level 1: text: Humans have hunted ducks since p ... evidence of this is uncommon.[35][42]
item-306 at level 5: list_item: ^ a b c d e f g Carboneras 1992, p. 537. item-319 at level 1: text: In many areas, wild ducks (inclu ... inated by pollutants such as PCBs.[44]
item-307 at level 5: list_item: ^ American Ornithologists' Union 1998, p. xix. item-320 at level 1: section_header: Domestication
item-308 at level 5: list_item: ^ American Ornithologists' Union 1998. item-321 at level 1: text: Main article: Domestic duck
item-309 at level 5: list_item: ^ Carboneras 1992, p. 538. item-322 at level 1: text: Indian Runner ducks, a common breed of domestic ducks
item-310 at level 5: list_item: ^ Christidis & Boles 2008, p. 62. item-323 at level 1: text: Ducks have many economic uses, b ... it weighs less than 1 kg (2.2 lb).[48]
item-311 at level 5: list_item: ^ Shirihai 2008, pp. 239, 245. item-324 at level 1: section_header: Heraldry
item-312 at level 5: list_item: ^ a b Pratt, Bruner & Berrett 1987, pp. 98107. item-325 at level 1: text: Three black-colored ducks in the coat of arms of Maaninka[49]
item-313 at level 5: list_item: ^ Fitter, Fitter & Hosking 2000, pp. 523. item-326 at level 1: text: Ducks appear on several coats of ... the coat of arms of Föglö (Åland).[51]
item-314 at level 5: list_item: ^ "Pacific Black Duck". www.wiresnr.org. Retrieved 2018-04-27. item-327 at level 1: section_header: Cultural references
item-315 at level 5: list_item: ^ Ogden, Evans. "Dabbling Ducks". CWE. Retrieved 2006-11-02. item-328 at level 1: text: In 2002, psychologist Richard Wi ... 54] and was made into a movie in 1986.
item-316 at level 5: list_item: ^ Karl Mathiesen (16 March 2015) ... Guardian. Retrieved 13 November 2016. item-329 at level 1: text: The 1992 Disney film The Mighty ... Ducks minor league baseball team.[55]
item-317 at level 5: list_item: ^ Rohwer, Frank C.; Anderson, Mi ... 4615-6787-5_4. ISBN 978-1-4615-6789-9. item-330 at level 1: section_header: See also
item-318 at level 5: list_item: ^ Smith, Cyndi M.; Cooke, Fred; ... 093/condor/102.1.201. hdl:10315/13797. item-331 at level 1: list: group group
item-319 at level 5: list_item: ^ "If You Find An Orphaned Duckl ... l on 2018-09-23. Retrieved 2018-12-22. item-332 at level 2: list_item: Birds portal
item-320 at level 5: list_item: ^ Carver, Heather (2011). The Du ...  9780557901562.[self-published source] item-333 at level 1: list: group group
item-321 at level 5: list_item: ^ Titlow, Budd (2013-09-03). Bir ... man & Littlefield. ISBN 9780762797707. item-334 at level 2: list_item: Domestic duck
item-322 at level 5: list_item: ^ Amos, Jonathan (2003-09-08). " ... kers". BBC News. Retrieved 2006-11-02. item-335 at level 2: list_item: Duck as food
item-323 at level 5: list_item: ^ "Mythbusters Episode 8". 12 December 2003. item-336 at level 2: list_item: Duck test
item-324 at level 5: list_item: ^ Erlandson 1994, p. 171. item-337 at level 2: list_item: Duck breeds
item-325 at level 5: list_item: ^ Jeffries 2008, pp. 168, 243. item-338 at level 2: list_item: Fictional ducks
item-326 at level 5: list_item: ^ a b Sued-Badillo 2003, p. 65. item-339 at level 2: list_item: Rubber duck
item-327 at level 5: list_item: ^ Thorpe 1996, p. 68. item-340 at level 1: section_header: Notes
item-328 at level 5: list_item: ^ Maisels 1999, p. 42. item-341 at level 1: section_header: Citations
item-329 at level 5: list_item: ^ Rau 1876, p. 133. item-342 at level 1: ordered_list: group group
item-330 at level 5: list_item: ^ Higman 2012, p. 23. item-343 at level 2: list_item: ^ "Duckling" . The American Heri ... Company. 2006 . Retrieved 2015-05-22 .
item-331 at level 5: list_item: ^ Hume 2012, p. 53. item-344 at level 2: list_item: ^ "Duckling" . Kernerman English ... td. 20002006 . Retrieved 2015-05-22 .
item-332 at level 5: list_item: ^ Hume 2012, p. 52. item-345 at level 2: list_item: ^ Dohner, Janet Vorwald (2001). ... niversity Press. ISBN 978-0300138139 .
item-333 at level 5: list_item: ^ Fieldhouse 2002, p. 167. item-346 at level 2: list_item: ^ Visca, Curt; Visca, Kelley (20 ... Publishing Group. ISBN 9780823961566 .
item-334 at level 5: list_item: ^ Livingston, A. D. (1998-01-01) ... Editions, Limited. ISBN 9781853263774. item-347 at level 2: list_item: ^ a b c d Carboneras 1992 , p. 536.
item-335 at level 5: list_item: ^ "Study plan for waterfowl inju ... on 2022-10-09. Retrieved 2 July 2019. item-348 at level 2: list_item: ^ Livezey 1986 , pp. 737738.
item-336 at level 5: list_item: ^ "FAOSTAT". www.fao.org. Retrieved 2019-10-25. item-349 at level 2: list_item: ^ Madsen, McHugh & de Kloet 1988 , p. 452.
item-337 at level 5: list_item: ^ "Anas platyrhynchos, Domestic ... . Digimorph.org. Retrieved 2012-12-23. item-350 at level 2: list_item: ^ Donne-Goussé, Laudet & Hänni 2002 , pp. 353354.
item-338 at level 5: list_item: ^ Sy Montgomery. "Mallard; Encyc ... Britannica.com. Retrieved 2012-12-23. item-351 at level 2: list_item: ^ a b c d e f Carboneras 1992 , p. 540.
item-339 at level 5: list_item: ^ Glenday, Craig (2014). Guinnes ... ited. pp. 135. ISBN 978-1-908843-15-9. item-352 at level 2: list_item: ^ Elphick, Dunning & Sibley 2001 , p. 191.
item-340 at level 5: list_item: ^ Suomen kunnallisvaakunat (in F ... tto. 1982. p. 147. ISBN 951-773-085-3. item-353 at level 2: list_item: ^ Kear 2005 , p. 448.
item-341 at level 5: list_item: ^ "Lubānas simbolika" (in Latvian). Retrieved September 9, 2021. item-354 at level 2: list_item: ^ Kear 2005 , p. 622623.
item-342 at level 5: list_item: ^ "Föglö" (in Swedish). Retrieved September 9, 2021. item-355 at level 2: list_item: ^ Kear 2005 , p. 686.
item-343 at level 5: list_item: ^ Young, Emma. "World's funniest ... w Scientist. Retrieved 7 January 2019. item-356 at level 2: list_item: ^ Elphick, Dunning & Sibley 2001 , p. 193.
item-344 at level 5: list_item: ^ "Howard the Duck (character)". Grand Comics Database. item-357 at level 2: list_item: ^ a b c d e f g Carboneras 1992 , p. 537.
item-345 at level 5: list_item: ^ Sanderson, Peter; Gilbert, Lau ... luding this bad-tempered talking duck. item-358 at level 2: list_item: ^ American Ornithologists' Union 1998 , p. xix.
item-346 at level 5: list_item: ^ "The Duck". University of Oregon Athletics. Retrieved 2022-01-20. item-359 at level 2: list_item: ^ American Ornithologists' Union 1998 .
item-347 at level 3: section_header: Sources item-360 at level 2: list_item: ^ Carboneras 1992 , p. 538.
item-348 at level 4: list: group list item-361 at level 2: list_item: ^ Christidis & Boles 2008 , p. 62.
item-349 at level 5: list_item: American Ornithologists' Union ( ... (PDF) from the original on 2022-10-09. item-362 at level 2: list_item: ^ Shirihai 2008 , pp. 239, 245.
item-350 at level 5: list_item: Carboneras, Carlos (1992). del H ... Lynx Edicions. ISBN 978-84-87334-10-8. item-363 at level 2: list_item: ^ a b Pratt, Bruner & Berrett 1987 , pp. 98107.
item-351 at level 5: list_item: Christidis, Les; Boles, Walter E ... ro Publishing. ISBN 978-0-643-06511-6. item-364 at level 2: list_item: ^ Fitter, Fitter & Hosking 2000 , pp. 523.
item-352 at level 5: list_item: Donne-Goussé, Carole; Laudet, Vi ... /S1055-7903(02)00019-2. PMID 12099792. item-365 at level 2: list_item: ^ "Pacific Black Duck" . www.wiresnr.org . Retrieved 2018-04-27 .
item-353 at level 5: list_item: Elphick, Chris; Dunning, John B. ... istopher Helm. ISBN 978-0-7136-6250-4. item-366 at level 2: list_item: ^ Ogden, Evans. "Dabbling Ducks" . CWE . Retrieved 2006-11-02 .
item-354 at level 5: list_item: Erlandson, Jon M. (1994). Early ... usiness Media. ISBN 978-1-4419-3231-0. item-367 at level 2: list_item: ^ Karl Mathiesen (16 March 2015) ... uardian . Retrieved 13 November 2016 .
item-355 at level 5: list_item: Fieldhouse, Paul (2002). Food, F ... ara: ABC-CLIO. ISBN 978-1-61069-412-4. item-368 at level 2: list_item: ^ Rohwer, Frank C.; Anderson, Mi ... 15-6787-5_4 . ISBN 978-1-4615-6789-9 .
item-356 at level 5: list_item: Fitter, Julian; Fitter, Daniel; ... versity Press. ISBN 978-0-691-10295-5. item-369 at level 2: list_item: ^ Smith, Cyndi M.; Cooke, Fred; ... condor/102.1.201 . hdl : 10315/13797 .
item-357 at level 5: list_item: Higman, B. W. (2012). How Food M ... Wiley & Sons. ISBN 978-1-4051-8947-7. item-370 at level 2: list_item: ^ "If You Find An Orphaned Duckl ... on 2018-09-23 . Retrieved 2018-12-22 .
item-358 at level 5: list_item: Hume, Julian H. (2012). Extinct ... istopher Helm. ISBN 978-1-4729-3744-5. item-371 at level 2: list_item: ^ Carver, Heather (2011). The Du ... 0557901562 . [ self-published source ]
item-359 at level 5: list_item: Jeffries, Richard (2008). Holoce ... Alabama Press. ISBN 978-0-8173-1658-7. item-372 at level 2: list_item: ^ Titlow, Budd (2013-09-03). Bir ... an & Littlefield. ISBN 9780762797707 .
item-360 at level 5: list_item: Kear, Janet, ed. (2005). Ducks, ... versity Press. ISBN 978-0-19-861009-0. item-373 at level 2: list_item: ^ Amos, Jonathan (2003-09-08). " ... s" . BBC News . Retrieved 2006-11-02 .
item-361 at level 5: list_item: Livezey, Bradley C. (October 198 ... (PDF) from the original on 2022-10-09. item-374 at level 2: list_item: ^ "Mythbusters Episode 8" . 12 December 2003.
item-362 at level 5: list_item: Madsen, Cort S.; McHugh, Kevin P ... (PDF) from the original on 2022-10-09. item-375 at level 2: list_item: ^ Erlandson 1994 , p. 171.
item-363 at level 5: list_item: Maisels, Charles Keith (1999). E ... on: Routledge. ISBN 978-0-415-10975-8. item-376 at level 2: list_item: ^ Jeffries 2008 , pp. 168, 243.
item-364 at level 5: list_item: Pratt, H. Douglas; Bruner, Phill ... University Press. ISBN 0-691-02399-9. item-377 at level 2: list_item: ^ a b Sued-Badillo 2003 , p. 65.
item-365 at level 5: list_item: Rau, Charles (1876). Early Man i ... ork: Harper & Brothers. LCCN 05040168. item-378 at level 2: list_item: ^ Thorpe 1996 , p. 68.
item-366 at level 5: list_item: Shirihai, Hadoram (2008). A Comp ... versity Press. ISBN 978-0-691-13666-0. item-379 at level 2: list_item: ^ Maisels 1999 , p. 42.
item-367 at level 5: list_item: Sued-Badillo, Jalil (2003). Auto ... Paris: UNESCO. ISBN 978-92-3-103832-7. item-380 at level 2: list_item: ^ Rau 1876 , p. 133.
item-368 at level 5: list_item: Thorpe, I. J. (1996). The Origin ... rk: Routledge. ISBN 978-0-415-08009-5. item-381 at level 2: list_item: ^ Higman 2012 , p. 23.
item-369 at level 2: section_header: External links item-382 at level 2: list_item: ^ Hume 2012 , p. 53.
item-370 at level 3: list: group list item-383 at level 2: list_item: ^ Hume 2012 , p. 52.
item-371 at level 4: list_item: Definitions from Wiktionary item-384 at level 2: list_item: ^ Fieldhouse 2002 , p. 167.
item-372 at level 4: list_item: Media from Commons item-385 at level 2: list_item: ^ Livingston, A. D. (1998-01-01) ... ditions, Limited. ISBN 9781853263774 .
item-373 at level 4: list_item: Quotations from Wikiquote item-386 at level 2: list_item: ^ "Study plan for waterfowl inju ... n 2022-10-09 . Retrieved 2 July 2019 .
item-374 at level 4: list_item: Recipes from Wikibooks item-387 at level 2: list_item: ^ "FAOSTAT" . www.fao.org . Retrieved 2019-10-25 .
item-375 at level 4: list_item: Taxa from Wikispecies item-388 at level 2: list_item: ^ "Anas platyrhynchos, Domestic ... Digimorph.org . Retrieved 2012-12-23 .
item-376 at level 4: list_item: Data from Wikidata item-389 at level 2: list_item: ^ Sy Montgomery. "Mallard; Encyc ... ritannica.com . Retrieved 2012-12-23 .
item-377 at level 3: list: group list item-390 at level 2: list_item: ^ Glenday, Craig (2014). Guinnes ... ed. pp. 135 . ISBN 978-1-908843-15-9 .
item-378 at level 4: list_item: list of books (useful looking abstracts) item-391 at level 2: list_item: ^ Suomen kunnallisvaakunat (in F ... to. 1982. p. 147. ISBN 951-773-085-3 .
item-379 at level 4: list_item: Ducks on postage stamps Archived 2013-05-13 at the Wayback Machine item-392 at level 2: list_item: ^ "Lubānas simbolika" (in Latvian) . Retrieved September 9, 2021 .
item-380 at level 4: list_item: Ducks at a Distance, by Rob Hine ... uide to identification of US waterfowl item-393 at level 2: list_item: ^ "Föglö" (in Swedish) . Retrieved September 9, 2021 .
item-381 at level 3: table with [3x2] item-394 at level 2: list_item: ^ Young, Emma. "World's funniest ... Scientist . Retrieved 7 January 2019 .
item-382 at level 3: picture item-395 at level 2: list_item: ^ "Howard the Duck (character)" . Grand Comics Database .
item-383 at level 3: text: Retrieved from "" item-396 at level 2: list_item: ^ Sanderson, Peter ; Gilbert, La ... luding this bad-tempered talking duck.
item-384 at level 3: text: : item-397 at level 2: list_item: ^ "The Duck" . University of Oregon Athletics . Retrieved 2022-01-20 .
item-385 at level 3: list: group list item-398 at level 1: section_header: Sources
item-386 at level 4: list_item: Ducks item-399 at level 1: list: group group
item-387 at level 4: list_item: Game birds item-400 at level 2: list_item: American Ornithologists' Union ( ... (PDF) from the original on 2022-10-09.
item-388 at level 4: list_item: Bird common names item-401 at level 2: list_item: Carboneras, Carlos (1992). del H ... ynx Edicions. ISBN 978-84-87334-10-8 .
item-389 at level 3: text: Hidden categories: item-402 at level 2: list_item: Christidis, Les; Boles, Walter E ... o Publishing. ISBN 978-0-643-06511-6 .
item-390 at level 3: list: group list item-403 at level 2: list_item: Donne-Goussé, Carole; Laudet, Vi ... 1055-7903(02)00019-2 . PMID 12099792 .
item-391 at level 4: list_item: All accuracy disputes item-404 at level 2: list_item: Elphick, Chris; Dunning, John B. ... stopher Helm. ISBN 978-0-7136-6250-4 .
item-392 at level 4: list_item: Accuracy disputes from February 2020 item-405 at level 2: list_item: Erlandson, Jon M. (1994). Early ... siness Media. ISBN 978-1-4419-3231-0 .
item-393 at level 4: list_item: CS1 Finnish-language sources (fi) item-406 at level 2: list_item: Fieldhouse, Paul (2002). Food, F ... ra: ABC-CLIO. ISBN 978-1-61069-412-4 .
item-394 at level 4: list_item: CS1 Latvian-language sources (lv) item-407 at level 2: list_item: Fitter, Julian; Fitter, Daniel; ... ersity Press. ISBN 978-0-691-10295-5 .
item-395 at level 4: list_item: CS1 Swedish-language sources (sv) item-408 at level 2: list_item: Higman, B. W. (2012). How Food M ... Wiley & Sons. ISBN 978-1-4051-8947-7 .
item-396 at level 4: list_item: Articles with short description item-409 at level 2: list_item: Hume, Julian H. (2012). Extinct ... stopher Helm. ISBN 978-1-4729-3744-5 .
item-397 at level 4: list_item: Short description is different from Wikidata item-410 at level 2: list_item: Jeffries, Richard (2008). Holoce ... labama Press. ISBN 978-0-8173-1658-7 .
item-398 at level 4: list_item: Wikipedia indefinitely move-protected pages item-411 at level 2: list_item: Kear, Janet, ed. (2005). Ducks, ... ersity Press. ISBN 978-0-19-861009-0 .
item-399 at level 4: list_item: Wikipedia indefinitely semi-protected pages item-412 at level 2: list_item: Livezey, Bradley C. (October 198 ... (PDF) from the original on 2022-10-09.
item-400 at level 4: list_item: Articles with 'species' microformats item-413 at level 2: list_item: Madsen, Cort S.; McHugh, Kevin P ... (PDF) from the original on 2022-10-09.
item-401 at level 4: list_item: Articles containing Old English (ca. 450-1100)-language text item-414 at level 2: list_item: Maisels, Charles Keith (1999). E ... n: Routledge. ISBN 978-0-415-10975-8 .
item-402 at level 4: list_item: Articles containing Dutch-language text item-415 at level 2: list_item: Pratt, H. Douglas; Bruner, Phill ... University Press. ISBN 0-691-02399-9 .
item-403 at level 4: list_item: Articles containing German-language text item-416 at level 2: list_item: Rau, Charles (1876). Early Man i ... rk: Harper & Brothers. LCCN 05040168 .
item-404 at level 4: list_item: Articles containing Norwegian-language text item-417 at level 2: list_item: Shirihai, Hadoram (2008). A Comp ... ersity Press. ISBN 978-0-691-13666-0 .
item-405 at level 4: list_item: Articles containing Lithuanian-language text item-418 at level 2: list_item: Sued-Badillo, Jalil (2003). Auto ... aris: UNESCO. ISBN 978-92-3-103832-7 .
item-406 at level 4: list_item: Articles containing Ancient Greek (to 1453)-language text item-419 at level 2: list_item: Thorpe, I. J. (1996). The Origin ... k: Routledge. ISBN 978-0-415-08009-5 .
item-407 at level 4: list_item: All articles with self-published sources item-420 at level 1: section_header: External links
item-408 at level 4: list_item: Articles with self-published sources from February 2020 item-421 at level 1: text: Duck at Wikipedia's sister projects
item-409 at level 4: list_item: All articles with unsourced statements item-422 at level 1: list: group group
item-410 at level 4: list_item: Articles with unsourced statements from January 2022 item-423 at level 2: list_item: Definitions from Wiktionary
item-411 at level 4: list_item: CS1: long volume value item-424 at level 2: list_item: Media from Commons
item-412 at level 4: list_item: Pages using Sister project links with wikidata mismatch item-425 at level 2: list_item: Quotations from Wikiquote
item-413 at level 4: list_item: Pages using Sister project links with hidden wikidata item-426 at level 2: list_item: Recipes from Wikibooks
item-414 at level 4: list_item: Webarchive template wayback links item-427 at level 2: list_item: Taxa from Wikispecies
item-415 at level 4: list_item: Articles with Project Gutenberg links item-428 at level 2: list_item: Data from Wikidata
item-416 at level 4: list_item: Articles containing video clips item-429 at level 1: list: group group
item-417 at level 3: list: group list item-430 at level 2: list_item: list of books (useful looking abstracts)
item-418 at level 4: list_item: This page was last edited on 21 September 2024, at 12:11 (UTC). item-431 at level 2: list_item: Ducks on postage stamps Archived 2013-05-13 at the Wayback Machine
item-419 at level 4: list_item: Text is available under the Crea ... tion, Inc., a non-profit organization. item-432 at level 2: list_item:
item-420 at level 3: list: group list item-433 at level 2: list_item: Ducks at a Distance, by Rob Hine ... uide to identification of US waterfowl
item-421 at level 4: list_item: Privacy policy item-434 at level 1: table with [3x2]
item-422 at level 4: list_item: About Wikipedia item-435 at level 1: text: NewPP limit report
item-423 at level 4: list_item: Disclaimers item-436 at level 1: text: Parsed by mwweb.codfw.main5d5b97b956mw5gf
item-424 at level 4: list_item: Contact Wikipedia item-437 at level 1: text: Cached time: 20241001035144
item-425 at level 4: list_item: Code of Conduct item-438 at level 1: text: Cache expiry: 2592000
item-426 at level 4: list_item: Developers item-439 at level 1: text: Reduced expiry: false
item-427 at level 4: list_item: Statistics item-440 at level 1: text: Complications: [varyrevisionsha1, showtoc]
item-428 at level 4: list_item: Cookie statement item-441 at level 1: text: CPU time usage: 1.191 seconds
item-429 at level 4: list_item: Mobile view item-442 at level 1: text: Real time usage: 1.452 seconds
item-430 at level 3: list: group list item-443 at level 1: text: Preprocessor visited node count: 12444/1000000
item-431 at level 3: list: group list item-444 at level 1: text: Postexpand include size: 122530/2097152 bytes
item-432 at level 1: caption: Pacific black duck displaying the characteristic upending "duck" item-445 at level 1: text: Template argument size: 9168/2097152 bytes
item-433 at level 1: caption: Male mallard. item-446 at level 1: text: Highest expansion depth: 14/100
item-434 at level 1: caption: Wood ducks. item-447 at level 1: text: Expensive parser function count: 14/500
item-435 at level 1: caption: Mallard landing in approach item-448 at level 1: text: Unstrip recursion depth: 1/20
item-436 at level 1: caption: Male Mandarin duck item-449 at level 1: text: Unstrip postexpand size: 165576/5000000 bytes
item-437 at level 1: caption: Flying steamer ducks in Ushuaia, Argentina item-450 at level 1: text: Lua time usage: 0.865/10.000 seconds
item-438 at level 1: caption: Female mallard in Cornwall, England item-451 at level 1: text: Lua memory usage: 25093454/52428800 bytes
item-439 at level 1: caption: Pecten along the bill item-452 at level 1: text: Number of Wikibase entities loaded: 1/400
item-440 at level 1: caption: Mallard duckling preening item-453 at level 1: text: Transclusion expansion time report (%,ms,calls,template)
item-441 at level 1: caption: A Muscovy duckling item-454 at level 1: text: 100.00% 1311.889 1 -total
item-442 at level 1: caption: Ringed teal item-455 at level 1: text: 22.17% 290.786 1 Template:Automatic_taxobox
item-443 at level 1: caption: Indian Runner ducks, a common breed of domestic ducks item-456 at level 1: text: 16.91% 221.802 1 Template:Reflist
item-444 at level 1: caption: Three black-colored ducks in the coat of arms of Maaninka[49] item-457 at level 1: text: 10.86% 142.472 44 Template:Sfn
item-458 at level 1: text: 9.48% 124.344 15 Template:Lang
item-459 at level 1: text: 9.25% 121.312 15 Template:Cite_web
item-460 at level 1: text: 8.03% 105.346 26 Template:Cite_book
item-461 at level 1: text: 5.85% 76.725 1 Template:Short_description
item-462 at level 1: text: 5.74% 75.262 1 Template:Authority_control
item-463 at level 1: text: 4.50% 58.973 1 Template:Sisterlinks
item-464 at level 1: text: Saved in parser cache with key e ... ering was triggered because: page-view
item-465 at level 1: text: esi <esi:include src="/esitest-fa8a495983347898/content" />
item-466 at level 1: text: Retrieved from "https://en.wikip ... index.php?title=Duck&oldid=1246843351"
item-467 at level 1: text: Categories:
item-468 at level 1: list: group group
item-469 at level 2: list_item: Ducks
item-470 at level 2: list_item: Game birds
item-471 at level 2: list_item: Bird common names
item-472 at level 1: text: Hidden categories:
item-473 at level 1: list: group group
item-474 at level 2: list_item: All accuracy disputes
item-475 at level 2: list_item: Accuracy disputes from February 2020
item-476 at level 2: list_item: CS1 Finnish-language sources (fi)
item-477 at level 2: list_item: CS1 Latvian-language sources (lv)
item-478 at level 2: list_item: CS1 Swedish-language sources (sv)
item-479 at level 2: list_item: Articles with short description
item-480 at level 2: list_item: Short description is different from Wikidata
item-481 at level 2: list_item: Wikipedia indefinitely move-protected pages
item-482 at level 2: list_item: Wikipedia indefinitely semi-protected pages
item-483 at level 2: list_item: Articles with 'species' microformats
item-484 at level 2: list_item: Articles containing Old English (ca. 450-1100)-language text
item-485 at level 2: list_item: Articles containing Dutch-language text
item-486 at level 2: list_item: Articles containing German-language text
item-487 at level 2: list_item: Articles containing Norwegian-language text
item-488 at level 2: list_item: Articles containing Lithuanian-language text
item-489 at level 2: list_item: Articles containing Ancient Greek (to 1453)-language text
item-490 at level 2: list_item: All articles with self-published sources
item-491 at level 2: list_item: Articles with self-published sources from February 2020
item-492 at level 2: list_item: All articles with unsourced statements
item-493 at level 2: list_item: Articles with unsourced statements from January 2022
item-494 at level 2: list_item: CS1: long volume value
item-495 at level 2: list_item: Pages using Sister project links with wikidata mismatch
item-496 at level 2: list_item: Pages using Sister project links with hidden wikidata
item-497 at level 2: list_item: Webarchive template wayback links
item-498 at level 2: list_item: Articles with Project Gutenberg links
item-499 at level 2: list_item: Articles containing video clips
item-500 at level 1: list: group group
item-501 at level 2: list_item: This page was last edited on 21 September 2024, at 12:11 (UTC) .
item-502 at level 2: list_item: Text is available under the Crea ... ion, Inc. , a non-profit organization.
item-503 at level 1: list: group group
item-504 at level 2: list_item: Privacy policy
item-505 at level 2: list_item: About Wikipedia
item-506 at level 2: list_item: Disclaimers
item-507 at level 2: list_item: Contact Wikipedia
item-508 at level 2: list_item: Code of Conduct
item-509 at level 2: list_item: Developers
item-510 at level 2: list_item: Statistics
item-511 at level 2: list_item: Cookie statement
item-512 at level 2: list_item: Mobile view
item-513 at level 1: list: group group
item-514 at level 2: list_item:
item-515 at level 2: list_item:
item-516 at level 1: list: group group

File diff suppressed because it is too large Load Diff

View File

@ -1,28 +1,84 @@
## Contents Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
- Main page
- Contents
- Current events
- Random article
- About Wikipedia
- Contact us
Contribute
- Help
- Learn to edit
- Community portal
- Recent changes
- Upload file
Search
Search
- Donate
Appearance
- Create account
- Log in
Personal tools
- Create account
- Log in
Pages for logged out editors learn more
- Contributions
- Talk
### Contents
move to sidebar
hide
- (Top) - (Top)
- 1 Etymology - 1 Etymology
- 2 Taxonomy - 2 Taxonomy
- 3 Morphology - 3 Morphology
- 4 Distribution and habitat - 4 Distribution and habitat
- 5 Behaviour Toggle Behaviour subsection - 5 Behaviour Toggle Behaviour subsection 5.1 Feeding 5.2 Breeding 5.3 Communication 5.4 Predators
- 5.1 Feeding - 5.1 Feeding
- 5.2 Breeding - 5.2 Breeding
- 5.3 Communication - 5.3 Communication
- 5.4 Predators - 5.4 Predators
- 6 Relationship with humans Toggle Relationship with humans subsection - 6 Relationship with humans Toggle Relationship with humans subsection 6.1 Hunting 6.2 Domestication 6.3 Heraldry 6.4 Cultural references
- 6.1 Hunting - 6.1 Hunting
- 6.2 Domestication - 6.2 Domestication
- 6.3 Heraldry - 6.3 Heraldry
- 6.4 Cultural references - 6.4 Cultural references
- 7 See also - 7 See also
- 8 Notes Toggle Notes subsection - 8 Notes Toggle Notes subsection 8.1 Citations 8.2 Sources
- 8.1 Citations - 8.1 Citations
- 8.2 Sources - 8.2 Sources
- 9 External links - 9 External links
Toggle the table of contents
# Duck # Duck
136 languages
- Acèh - Acèh
- Afrikaans - Afrikaans
- Alemannisch - Alemannisch
@ -160,15 +216,25 @@
- Žemaitėška - Žemaitėška
- 中文 - 中文
Edit links
- Article - Article
- Talk - Talk
English
- Read - Read
- View source - View source
- View history - View history
Tools Tools
Tools
move to sidebar
hide
Actions Actions
- Read - Read
@ -200,18 +266,22 @@ In other projects
Appearance Appearance
<!-- image --> move to sidebar
hide
From Wikipedia, the free encyclopedia From Wikipedia, the free encyclopedia
(Redirected from Duckling)
Common name for many species of bird Common name for many species of bird
This article is about the bird. For duck as a food, see . For other uses, see . This article is about the bird. For duck as a food, see Duck as food. For other uses, see Duck (disambiguation).
"Duckling" redirects here. For other uses, see . "Duckling" redirects here. For other uses, see Duckling (disambiguation).
| Duck | Duck | | Duck | Duck |
|--------------------------------|--------------------------------| |-------------------------------|-------------------------------|
| | | | | |
| Bufflehead(Bucephala albeola) | Bufflehead(Bucephala albeola) | | Bufflehead(Bucephala albeola) | Bufflehead(Bucephala albeola) |
| Scientific classification | Scientific classification | | Scientific classification | Scientific classification |
@ -229,14 +299,12 @@ Duck is the common name for numerous species of waterfowl in the family Anatidae
Ducks are sometimes confused with several types of unrelated water birds with similar forms, such as loons or divers, grebes, gallinules and coots. Ducks are sometimes confused with several types of unrelated water birds with similar forms, such as loons or divers, grebes, gallinules and coots.
## Etymology ### Etymology
The word duck comes from Old English dūce 'diver', a derivative of the verb *dūcan 'to duck, bend down low as if to get under something, or dive', because of the way many species in the dabbling duck group feed by upending; compare with Dutch duiken and German tauchen 'to dive'. The word duck comes from Old English dūce 'diver', a derivative of the verb *dūcan 'to duck, bend down low as if to get under something, or dive', because of the way many species in the dabbling duck group feed by upending; compare with Dutch duiken and German tauchen 'to dive'.
Pacific black duck displaying the characteristic upending "duck" Pacific black duck displaying the characteristic upending "duck"
<!-- image -->
This word replaced Old English ened /ænid 'duck', possibly to avoid confusion with other words, such as ende 'end' with similar forms. Other Germanic languages still have similar words for duck, for example, Dutch eend, German Ente and Norwegian and. The word ened /ænid was inherited from Proto-Indo-European; cf. Latin anas "duck", Lithuanian ántis 'duck', Ancient Greek νῆσσα /νῆττα (nēssa /nētta) 'duck', and Sanskrit ātí 'water bird', among others. This word replaced Old English ened /ænid 'duck', possibly to avoid confusion with other words, such as ende 'end' with similar forms. Other Germanic languages still have similar words for duck, for example, Dutch eend, German Ente and Norwegian and. The word ened /ænid was inherited from Proto-Indo-European; cf. Latin anas "duck", Lithuanian ántis 'duck', Ancient Greek νῆσσα /νῆττα (nēssa /nētta) 'duck', and Sanskrit ātí 'water bird', among others.
A duckling is a young duck in downy plumage[1] or baby duck,[2] but in the food trade a young domestic duck which has just reached adult size and bulk and its meat is still fully tender, is sometimes labelled as a duckling. A duckling is a young duck in downy plumage[1] or baby duck,[2] but in the food trade a young domestic duck which has just reached adult size and bulk and its meat is still fully tender, is sometimes labelled as a duckling.
@ -245,60 +313,46 @@ A male is called a drake and the female is called a duck, or in ornithology a he
Male mallard. Male mallard.
<!-- image -->
Wood ducks. Wood ducks.
<!-- image --> ### Taxonomy
## Taxonomy
All ducks belong to the biological order Anseriformes, a group that contains the ducks, geese and swans, as well as the screamers, and the magpie goose.[5] All except the screamers belong to the biological family Anatidae.[5] Within the family, ducks are split into a variety of subfamilies and 'tribes'. The number and composition of these subfamilies and tribes is the cause of considerable disagreement among taxonomists.[5] Some base their decisions on morphological characteristics, others on shared behaviours or genetic studies.[6][7] The number of suggested subfamilies containing ducks ranges from two to five.[8][9] The significant level of hybridisation that occurs among wild ducks complicates efforts to tease apart the relationships between various species.[9] All ducks belong to the biological order Anseriformes, a group that contains the ducks, geese and swans, as well as the screamers, and the magpie goose.[5] All except the screamers belong to the biological family Anatidae.[5] Within the family, ducks are split into a variety of subfamilies and 'tribes'. The number and composition of these subfamilies and tribes is the cause of considerable disagreement among taxonomists.[5] Some base their decisions on morphological characteristics, others on shared behaviours or genetic studies.[6][7] The number of suggested subfamilies containing ducks ranges from two to five.[8][9] The significant level of hybridisation that occurs among wild ducks complicates efforts to tease apart the relationships between various species.[9]
Mallard landing in approach Mallard landing in approach
<!-- image -->
In most modern classifications, the so-called 'true ducks' belong to the subfamily Anatinae, which is further split into a varying number of tribes.[10] The largest of these, the Anatini, contains the 'dabbling' or 'river' ducks named for their method of feeding primarily at the surface of fresh water.[11] The 'diving ducks', also named for their primary feeding method, make up the tribe Aythyini.[12] The 'sea ducks' of the tribe Mergini are diving ducks which specialise on fish and shellfish and spend a majority of their lives in saltwater.[13] The tribe Oxyurini contains the 'stifftails', diving ducks notable for their small size and stiff, upright tails.[14] In most modern classifications, the so-called 'true ducks' belong to the subfamily Anatinae, which is further split into a varying number of tribes.[10] The largest of these, the Anatini, contains the 'dabbling' or 'river' ducks named for their method of feeding primarily at the surface of fresh water.[11] The 'diving ducks', also named for their primary feeding method, make up the tribe Aythyini.[12] The 'sea ducks' of the tribe Mergini are diving ducks which specialise on fish and shellfish and spend a majority of their lives in saltwater.[13] The tribe Oxyurini contains the 'stifftails', diving ducks notable for their small size and stiff, upright tails.[14]
A number of other species called ducks are not considered to be 'true ducks', and are typically placed in other subfamilies or tribes. The whistling ducks are assigned either to a tribe (Dendrocygnini) in the subfamily Anatinae or the subfamily Anserinae,[15] or to their own subfamily (Dendrocygninae) or family (Dendrocyganidae).[9][16] The freckled duck of Australia is either the sole member of the tribe Stictonettini in the subfamily Anserinae,[15] or in its own family, the Stictonettinae.[9] The shelducks make up the tribe Tadornini in the family Anserinae in some classifications,[15] and their own subfamily, Tadorninae, in others,[17] while the steamer ducks are either placed in the family Anserinae in the tribe Tachyerini[15] or lumped with the shelducks in the tribe Tadorini.[9] The perching ducks make up in the tribe Cairinini in the subfamily Anserinae in some classifications, while that tribe is eliminated in other classifications and its members assigned to the tribe Anatini.[9] The torrent duck is generally included in the subfamily Anserinae in the monotypic tribe Merganettini,[15] but is sometimes included in the tribe Tadornini.[18] The pink-eared duck is sometimes included as a true duck either in the tribe Anatini[15] or the tribe Malacorhynchini,[19] and other times is included with the shelducks in the tribe Tadornini.[15] A number of other species called ducks are not considered to be 'true ducks', and are typically placed in other subfamilies or tribes. The whistling ducks are assigned either to a tribe (Dendrocygnini) in the subfamily Anatinae or the subfamily Anserinae,[15] or to their own subfamily (Dendrocygninae) or family (Dendrocyganidae).[9][16] The freckled duck of Australia is either the sole member of the tribe Stictonettini in the subfamily Anserinae,[15] or in its own family, the Stictonettinae.[9] The shelducks make up the tribe Tadornini in the family Anserinae in some classifications,[15] and their own subfamily, Tadorninae, in others,[17] while the steamer ducks are either placed in the family Anserinae in the tribe Tachyerini[15] or lumped with the shelducks in the tribe Tadorini.[9] The perching ducks make up in the tribe Cairinini in the subfamily Anserinae in some classifications, while that tribe is eliminated in other classifications and its members assigned to the tribe Anatini.[9] The torrent duck is generally included in the subfamily Anserinae in the monotypic tribe Merganettini,[15] but is sometimes included in the tribe Tadornini.[18] The pink-eared duck is sometimes included as a true duck either in the tribe Anatini[15] or the tribe Malacorhynchini,[19] and other times is included with the shelducks in the tribe Tadornini.[15]
## Morphology ### Morphology
Male Mandarin duck Male Mandarin duck
<!-- image -->
The overall body plan of ducks is elongated and broad, and they are also relatively long-necked, albeit not as long-necked as the geese and swans. The body shape of diving ducks varies somewhat from this in being more rounded. The bill is usually broad and contains serrated pectens, which are particularly well defined in the filter-feeding species. In the case of some fishing species the bill is long and strongly serrated. The scaled legs are strong and well developed, and generally set far back on the body, more so in the highly aquatic species. The wings are very strong and are generally short and pointed, and the flight of ducks requires fast continuous strokes, requiring in turn strong wing muscles. Three species of steamer duck are almost flightless, however. Many species of duck are temporarily flightless while moulting; they seek out protected habitat with good food supplies during this period. This moult typically precedes migration. The overall body plan of ducks is elongated and broad, and they are also relatively long-necked, albeit not as long-necked as the geese and swans. The body shape of diving ducks varies somewhat from this in being more rounded. The bill is usually broad and contains serrated pectens, which are particularly well defined in the filter-feeding species. In the case of some fishing species the bill is long and strongly serrated. The scaled legs are strong and well developed, and generally set far back on the body, more so in the highly aquatic species. The wings are very strong and are generally short and pointed, and the flight of ducks requires fast continuous strokes, requiring in turn strong wing muscles. Three species of steamer duck are almost flightless, however. Many species of duck are temporarily flightless while moulting; they seek out protected habitat with good food supplies during this period. This moult typically precedes migration.
The drakes of northern species often have extravagant plumage, but that is moulted in summer to give a more female-like appearance, the "eclipse" plumage. Southern resident species typically show less sexual dimorphism, although there are exceptions such as the paradise shelduck of New Zealand, which is both strikingly sexually dimorphic and in which the female's plumage is brighter than that of the male. The plumage of juvenile birds generally resembles that of the female. Female ducks have evolved to have a corkscrew shaped vagina to prevent rape. The drakes of northern species often have extravagant plumage, but that is moulted in summer to give a more female-like appearance, the "eclipse" plumage. Southern resident species typically show less sexual dimorphism, although there are exceptions such as the paradise shelduck of New Zealand, which is both strikingly sexually dimorphic and in which the female's plumage is brighter than that of the male. The plumage of juvenile birds generally resembles that of the female. Female ducks have evolved to have a corkscrew shaped vagina to prevent rape.
## Distribution and habitat ### Distribution and habitat
See also: List of Anseriformes by population
Flying steamer ducks in Ushuaia, Argentina Flying steamer ducks in Ushuaia, Argentina
<!-- image -->
Ducks have a cosmopolitan distribution, and are found on every continent except Antarctica.[5] Several species manage to live on subantarctic islands, including South Georgia and the Auckland Islands.[20] Ducks have reached a number of isolated oceanic islands, including the Hawaiian Islands, Micronesia and the Galápagos Islands, where they are often vagrants and less often residents.[21][22] A handful are endemic to such far-flung islands.[21] Ducks have a cosmopolitan distribution, and are found on every continent except Antarctica.[5] Several species manage to live on subantarctic islands, including South Georgia and the Auckland Islands.[20] Ducks have reached a number of isolated oceanic islands, including the Hawaiian Islands, Micronesia and the Galápagos Islands, where they are often vagrants and less often residents.[21][22] A handful are endemic to such far-flung islands.[21]
Female mallard in Cornwall, England Female mallard in Cornwall, England
<!-- image -->
Some duck species, mainly those breeding in the temperate and Arctic Northern Hemisphere, are migratory; those in the tropics are generally not. Some ducks, particularly in Australia where rainfall is erratic, are nomadic, seeking out the temporary lakes and pools that form after localised heavy rain.[23] Some duck species, mainly those breeding in the temperate and Arctic Northern Hemisphere, are migratory; those in the tropics are generally not. Some ducks, particularly in Australia where rainfall is erratic, are nomadic, seeking out the temporary lakes and pools that form after localised heavy rain.[23]
## Behaviour ### Behaviour
### Feeding #### Feeding
Pecten along the bill Pecten along the bill
<!-- image -->
Mallard duckling preening Mallard duckling preening
<!-- image -->
Ducks eat food sources such as grasses, aquatic plants, fish, insects, small amphibians, worms, and small molluscs. Ducks eat food sources such as grasses, aquatic plants, fish, insects, small amphibians, worms, and small molluscs.
Dabbling ducks feed on the surface of water or on land, or as deep as they can reach by up-ending without completely submerging.[24] Along the edge of the bill, there is a comb-like structure called a pecten. This strains the water squirting from the side of the bill and traps any food. The pecten is also used to preen feathers and to hold slippery food items. Dabbling ducks feed on the surface of water or on land, or as deep as they can reach by up-ending without completely submerging.[24] Along the edge of the bill, there is a comb-like structure called a pecten. This strains the water squirting from the side of the bill and traps any food. The pecten is also used to preen feathers and to hold slippery food items.
@ -311,61 +365,57 @@ The others have the characteristic wide flat bill adapted to dredging-type jobs
The Guardian published an article advising that ducks should not be fed with bread because it damages the health of the ducks and pollutes waterways.[25] The Guardian published an article advising that ducks should not be fed with bread because it damages the health of the ducks and pollutes waterways.[25]
### Breeding #### Breeding
A Muscovy duckling A Muscovy duckling
<!-- image -->
Ducks generally only have one partner at a time, although the partnership usually only lasts one year.[26] Larger species and the more sedentary species (like fast-river specialists) tend to have pair-bonds that last numerous years.[27] Most duck species breed once a year, choosing to do so in favourable conditions (spring/summer or wet seasons). Ducks also tend to make a nest before breeding, and, after hatching, lead their ducklings to water. Mother ducks are very caring and protective of their young, but may abandon some of their ducklings if they are physically stuck in an area they cannot get out of (such as nesting in an enclosed courtyard) or are not prospering due to genetic defects or sickness brought about by hypothermia, starvation, or disease. Ducklings can also be orphaned by inconsistent late hatching where a few eggs hatch after the mother has abandoned the nest and led her ducklings to water.[28] Ducks generally only have one partner at a time, although the partnership usually only lasts one year.[26] Larger species and the more sedentary species (like fast-river specialists) tend to have pair-bonds that last numerous years.[27] Most duck species breed once a year, choosing to do so in favourable conditions (spring/summer or wet seasons). Ducks also tend to make a nest before breeding, and, after hatching, lead their ducklings to water. Mother ducks are very caring and protective of their young, but may abandon some of their ducklings if they are physically stuck in an area they cannot get out of (such as nesting in an enclosed courtyard) or are not prospering due to genetic defects or sickness brought about by hypothermia, starvation, or disease. Ducklings can also be orphaned by inconsistent late hatching where a few eggs hatch after the mother has abandoned the nest and led her ducklings to water.[28]
### Communication #### Communication
Female mallard ducks (as well as several other species in the genus Anas, such as the American and Pacific black ducks, spot-billed duck, northern pintail and common teal) make the classic "quack" sound while males make a similar but raspier sound that is sometimes written as "breeeeze",[29][self-published source?] but, despite widespread misconceptions, most species of duck do not "quack".[30] In general, ducks make a range of calls, including whistles, cooing, yodels and grunts. For example, the scaup which are diving ducks make a noise like "scaup" (hence their name). Calls may be loud displaying calls or quieter contact calls. Female mallard ducks (as well as several other species in the genus Anas, such as the American and Pacific black ducks, spot-billed duck, northern pintail and common teal) make the classic "quack" sound while males make a similar but raspier sound that is sometimes written as "breeeeze",[29][self-published source?] but, despite widespread misconceptions, most species of duck do not "quack".[30] In general, ducks make a range of calls, including whistles, cooing, yodels and grunts. For example, the scaup which are diving ducks make a noise like "scaup" (hence their name). Calls may be loud displaying calls or quieter contact calls.
A common urban legend claims that duck quacks do not echo; however, this has been proven to be false. This myth was first debunked by the Acoustics Research Centre at the University of Salford in 2003 as part of the British Association's Festival of Science.[31] It was also debunked in one of the earlier episodes of the popular Discovery Channel television show MythBusters.[32] A common urban legend claims that duck quacks do not echo; however, this has been proven to be false. This myth was first debunked by the Acoustics Research Centre at the University of Salford in 2003 as part of the British Association's Festival of Science.[31] It was also debunked in one of the earlier episodes of the popular Discovery Channel television show MythBusters.[32]
### Predators #### Predators
Ringed teal Ringed teal
<!-- image -->
Ducks have many predators. Ducklings are particularly vulnerable, since their inability to fly makes them easy prey not only for predatory birds but also for large fish like pike, crocodilians, predatory testudines such as the alligator snapping turtle, and other aquatic hunters, including fish-eating birds such as herons. Ducks' nests are raided by land-based predators, and brooding females may be caught unaware on the nest by mammals, such as foxes, or large birds, such as hawks or owls. Ducks have many predators. Ducklings are particularly vulnerable, since their inability to fly makes them easy prey not only for predatory birds but also for large fish like pike, crocodilians, predatory testudines such as the alligator snapping turtle, and other aquatic hunters, including fish-eating birds such as herons. Ducks' nests are raided by land-based predators, and brooding females may be caught unaware on the nest by mammals, such as foxes, or large birds, such as hawks or owls.
Adult ducks are fast fliers, but may be caught on the water by large aquatic predators including big fish such as the North American muskie and the European pike. In flight, ducks are safe from all but a few predators such as humans and the peregrine falcon, which uses its speed and strength to catch ducks. Adult ducks are fast fliers, but may be caught on the water by large aquatic predators including big fish such as the North American muskie and the European pike. In flight, ducks are safe from all but a few predators such as humans and the peregrine falcon, which uses its speed and strength to catch ducks.
## Relationship with humans ### Relationship with humans
### Hunting #### Hunting
Main article: Waterfowl hunting
Humans have hunted ducks since prehistoric times. Excavations of middens in California dating to 7800 6400 BP have turned up bones of ducks, including at least one now-extinct flightless species.[33] Ducks were captured in "significant numbers" by Holocene inhabitants of the lower Ohio River valley, suggesting they took advantage of the seasonal bounty provided by migrating waterfowl.[34] Neolithic hunters in locations as far apart as the Caribbean,[35] Scandinavia,[36] Egypt,[37] Switzerland,[38] and China relied on ducks as a source of protein for some or all of the year.[39] Archeological evidence shows that Māori people in New Zealand hunted the flightless Finsch's duck, possibly to extinction, though rat predation may also have contributed to its fate.[40] A similar end awaited the Chatham duck, a species with reduced flying capabilities which went extinct shortly after its island was colonised by Polynesian settlers.[41] It is probable that duck eggs were gathered by Neolithic hunter-gathers as well, though hard evidence of this is uncommon.[35][42] Humans have hunted ducks since prehistoric times. Excavations of middens in California dating to 7800 6400 BP have turned up bones of ducks, including at least one now-extinct flightless species.[33] Ducks were captured in "significant numbers" by Holocene inhabitants of the lower Ohio River valley, suggesting they took advantage of the seasonal bounty provided by migrating waterfowl.[34] Neolithic hunters in locations as far apart as the Caribbean,[35] Scandinavia,[36] Egypt,[37] Switzerland,[38] and China relied on ducks as a source of protein for some or all of the year.[39] Archeological evidence shows that Māori people in New Zealand hunted the flightless Finsch's duck, possibly to extinction, though rat predation may also have contributed to its fate.[40] A similar end awaited the Chatham duck, a species with reduced flying capabilities which went extinct shortly after its island was colonised by Polynesian settlers.[41] It is probable that duck eggs were gathered by Neolithic hunter-gathers as well, though hard evidence of this is uncommon.[35][42]
In many areas, wild ducks (including ducks farmed and released into the wild) are hunted for food or sport,[43] by shooting, or by being trapped using duck decoys. Because an idle floating duck or a duck squatting on land cannot react to fly or move quickly, "a sitting duck" has come to mean "an easy target". These ducks may be contaminated by pollutants such as PCBs.[44] In many areas, wild ducks (including ducks farmed and released into the wild) are hunted for food or sport,[43] by shooting, or by being trapped using duck decoys. Because an idle floating duck or a duck squatting on land cannot react to fly or move quickly, "a sitting duck" has come to mean "an easy target". These ducks may be contaminated by pollutants such as PCBs.[44]
### Domestication #### Domestication
Main article: Domestic duck
Indian Runner ducks, a common breed of domestic ducks Indian Runner ducks, a common breed of domestic ducks
<!-- image -->
Ducks have many economic uses, being farmed for their meat, eggs, and feathers (particularly their down). Approximately 3 billion ducks are slaughtered each year for meat worldwide.[45] They are also kept and bred by aviculturists and often displayed in zoos. Almost all the varieties of domestic ducks are descended from the mallard (Anas platyrhynchos), apart from the Muscovy duck (Cairina moschata).[46][47] The Call duck is another example of a domestic duck breed. Its name comes from its original use established by hunters, as a decoy to attract wild mallards from the sky, into traps set for them on the ground. The call duck is the world's smallest domestic duck breed, as it weighs less than 1 kg (2.2 lb).[48] Ducks have many economic uses, being farmed for their meat, eggs, and feathers (particularly their down). Approximately 3 billion ducks are slaughtered each year for meat worldwide.[45] They are also kept and bred by aviculturists and often displayed in zoos. Almost all the varieties of domestic ducks are descended from the mallard (Anas platyrhynchos), apart from the Muscovy duck (Cairina moschata).[46][47] The Call duck is another example of a domestic duck breed. Its name comes from its original use established by hunters, as a decoy to attract wild mallards from the sky, into traps set for them on the ground. The call duck is the world's smallest domestic duck breed, as it weighs less than 1 kg (2.2 lb).[48]
### Heraldry #### Heraldry
Three black-colored ducks in the coat of arms of Maaninka[49] Three black-colored ducks in the coat of arms of Maaninka[49]
<!-- image -->
Ducks appear on several coats of arms, including the coat of arms of Lubāna (Latvia)[50] and the coat of arms of Föglö (Åland).[51] Ducks appear on several coats of arms, including the coat of arms of Lubāna (Latvia)[50] and the coat of arms of Föglö (Åland).[51]
### Cultural references #### Cultural references
In 2002, psychologist Richard Wiseman and colleagues at the University of Hertfordshire, UK, finished a year-long LaughLab experiment, concluding that of all animals, ducks attract the most humor and silliness; he said, "If you're going to tell a joke involving an animal, make it a duck."[52] The word "duck" may have become an inherently funny word in many languages, possibly because ducks are seen as silly in their looks or behavior. Of the many ducks in fiction, many are cartoon characters, such as Walt Disney's Donald Duck, and Warner Bros.' Daffy Duck. Howard the Duck started as a comic book character in 1973[53][54] and was made into a movie in 1986. In 2002, psychologist Richard Wiseman and colleagues at the University of Hertfordshire, UK, finished a year-long LaughLab experiment, concluding that of all animals, ducks attract the most humor and silliness; he said, "If you're going to tell a joke involving an animal, make it a duck."[52] The word "duck" may have become an inherently funny word in many languages, possibly because ducks are seen as silly in their looks or behavior. Of the many ducks in fiction, many are cartoon characters, such as Walt Disney's Donald Duck, and Warner Bros.' Daffy Duck. Howard the Duck started as a comic book character in 1973[53][54] and was made into a movie in 1986.
The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck as the mascot for the fictional youth hockey team who are protagonists of the movie, based on the duck being described as a fierce fighter. This led to the duck becoming the nickname and mascot for the eventual National Hockey League professional team of the Anaheim Ducks, who were founded with the name the Mighty Ducks of Anaheim.[citation needed] The duck is also the nickname of the University of Oregon sports teams as well as the Long Island Ducks minor league baseball team.[55] The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck as the mascot for the fictional youth hockey team who are protagonists of the movie, based on the duck being described as a fierce fighter. This led to the duck becoming the nickname and mascot for the eventual National Hockey League professional team of the Anaheim Ducks, who were founded with the name the Mighty Ducks of Anaheim.[citation needed] The duck is also the nickname of the University of Oregon sports teams as well as the Long Island Ducks minor league baseball team.[55]
## See also ### See also
- Birds portal - Birds portal
@ -376,14 +426,14 @@ The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck a
- Fictional ducks - Fictional ducks
- Rubber duck - Rubber duck
## Notes ### Notes
### Citations #### Citations
1. ^ "Duckling" . The American Heritage Dictionary of the English Language, Fourth Edition . Houghton Mifflin Company. 2006 . Retrieved 2015-05-22 . 1. ^ "Duckling" . The American Heritage Dictionary of the English Language, Fourth Edition . Houghton Mifflin Company. 2006 . Retrieved 2015-05-22 .
2. ^ "Duckling" . Kernerman English Multilingual Dictionary (Beta Version) . K. Dictionaries Ltd. 20002006 . Retrieved 2015-05-22 . 2. ^ "Duckling" . Kernerman English Multilingual Dictionary (Beta Version) . K. Dictionaries Ltd. 20002006 . Retrieved 2015-05-22 .
3. ^ Dohner, Janet Vorwald (2001). The Encyclopedia of Historic and Endangered Livestock and Poultry Breeds. Yale University Press. ISBN 978-0300138139. 3. ^ Dohner, Janet Vorwald (2001). The Encyclopedia of Historic and Endangered Livestock and Poultry Breeds . Yale University Press. ISBN 978-0300138139 .
4. ^ Visca, Curt; Visca, Kelley (2003). How to Draw Cartoon Birds. The Rosen Publishing Group. ISBN 9780823961566. 4. ^ Visca, Curt; Visca, Kelley (2003). How to Draw Cartoon Birds . The Rosen Publishing Group. ISBN 9780823961566 .
5. ^ a b c d Carboneras 1992 , p. 536. 5. ^ a b c d Carboneras 1992 , p. 536.
6. ^ Livezey 1986 , pp. 737738. 6. ^ Livezey 1986 , pp. 737738.
7. ^ Madsen, McHugh &amp; de Kloet 1988 , p. 452. 7. ^ Madsen, McHugh &amp; de Kloet 1988 , p. 452.
@ -405,11 +455,11 @@ The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck a
23. ^ "Pacific Black Duck" . www.wiresnr.org . Retrieved 2018-04-27 . 23. ^ "Pacific Black Duck" . www.wiresnr.org . Retrieved 2018-04-27 .
24. ^ Ogden, Evans. "Dabbling Ducks" . CWE . Retrieved 2006-11-02 . 24. ^ Ogden, Evans. "Dabbling Ducks" . CWE . Retrieved 2006-11-02 .
25. ^ Karl Mathiesen (16 March 2015). "Don't feed the ducks bread, say conservationists" . The Guardian . Retrieved 13 November 2016 . 25. ^ Karl Mathiesen (16 March 2015). "Don't feed the ducks bread, say conservationists" . The Guardian . Retrieved 13 November 2016 .
26. ^ Rohwer, Frank C.; Anderson, Michael G. (1988). "Female-Biased Philopatry, Monogamy, and the Timing of Pair Formation in Migratory Waterfowl". Current Ornithology. pp. 187221. doi:10.1007/978-1-4615-6787-5\_4. ISBN 978-1-4615-6789-9. 26. ^ Rohwer, Frank C.; Anderson, Michael G. (1988). "Female-Biased Philopatry, Monogamy, and the Timing of Pair Formation in Migratory Waterfowl". Current Ornithology . pp. 187221. doi : 10.1007/978-1-4615-6787-5\_4 . ISBN 978-1-4615-6789-9 .
27. ^ Smith, Cyndi M.; Cooke, Fred; Robertson, Gregory J.; Goudie, R. Ian; Boyd, W. Sean (2000). "Long-Term Pair Bonds in Harlequin Ducks" . The Condor . 102 (1): 201205. doi : 10.1093/condor/102.1.201 . hdl : 10315/13797 . 27. ^ Smith, Cyndi M.; Cooke, Fred; Robertson, Gregory J.; Goudie, R. Ian; Boyd, W. Sean (2000). "Long-Term Pair Bonds in Harlequin Ducks" . The Condor . 102 (1): 201205. doi : 10.1093/condor/102.1.201 . hdl : 10315/13797 .
28. ^ "If You Find An Orphaned Duckling - Wildlife Rehabber" . wildliferehabber.com . Archived from the original on 2018-09-23 . Retrieved 2018-12-22 . 28. ^ "If You Find An Orphaned Duckling - Wildlife Rehabber" . wildliferehabber.com . Archived from the original on 2018-09-23 . Retrieved 2018-12-22 .
29. ^ Carver, Heather (2011). The Duck Bible. Lulu.com. ISBN 9780557901562.[self-published source] 29. ^ Carver, Heather (2011). The Duck Bible . Lulu.com. ISBN 9780557901562 . [ self-published source ]
30. ^ Titlow, Budd (2013-09-03). Bird Brains: Inside the Strange Minds of Our Fine Feathered Friends. Rowman &amp; Littlefield. ISBN 9780762797707. 30. ^ Titlow, Budd (2013-09-03). Bird Brains: Inside the Strange Minds of Our Fine Feathered Friends . Rowman &amp; Littlefield. ISBN 9780762797707 .
31. ^ Amos, Jonathan (2003-09-08). "Sound science is quackers" . BBC News . Retrieved 2006-11-02 . 31. ^ Amos, Jonathan (2003-09-08). "Sound science is quackers" . BBC News . Retrieved 2006-11-02 .
32. ^ "Mythbusters Episode 8" . 12 December 2003. 32. ^ "Mythbusters Episode 8" . 12 December 2003.
33. ^ Erlandson 1994 , p. 171. 33. ^ Erlandson 1994 , p. 171.
@ -422,44 +472,46 @@ The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck a
40. ^ Hume 2012 , p. 53. 40. ^ Hume 2012 , p. 53.
41. ^ Hume 2012 , p. 52. 41. ^ Hume 2012 , p. 52.
42. ^ Fieldhouse 2002 , p. 167. 42. ^ Fieldhouse 2002 , p. 167.
43. ^ Livingston, A. D. (1998-01-01). Guide to Edible Plants and Animals. Wordsworth Editions, Limited. ISBN 9781853263774. 43. ^ Livingston, A. D. (1998-01-01). Guide to Edible Plants and Animals . Wordsworth Editions, Limited. ISBN 9781853263774 .
44. ^ "Study plan for waterfowl injury assessment: Determining PCB concentrations in Hudson river resident waterfowl" (PDF) . New York State Department of Environmental Conservation . US Department of Commerce. December 2008. p. 3. Archived (PDF) from the original on 2022-10-09 . Retrieved 2 July 2019 . 44. ^ "Study plan for waterfowl injury assessment: Determining PCB concentrations in Hudson river resident waterfowl" (PDF) . New York State Department of Environmental Conservation . US Department of Commerce. December 2008. p. 3. Archived (PDF) from the original on 2022-10-09 . Retrieved 2 July 2019 .
45. ^ "FAOSTAT" . www.fao.org . Retrieved 2019-10-25 . 45. ^ "FAOSTAT" . www.fao.org . Retrieved 2019-10-25 .
46. ^ "Anas platyrhynchos, Domestic Duck; DigiMorph Staff - The University of Texas at Austin" . Digimorph.org . Retrieved 2012-12-23 . 46. ^ "Anas platyrhynchos, Domestic Duck; DigiMorph Staff - The University of Texas at Austin" . Digimorph.org . Retrieved 2012-12-23 .
47. ^ Sy Montgomery. "Mallard; Encyclopædia Britannica" . Britannica.com . Retrieved 2012-12-23 . 47. ^ Sy Montgomery. "Mallard; Encyclopædia Britannica" . Britannica.com . Retrieved 2012-12-23 .
48. ^ Glenday, Craig (2014). Guinness World Records. Guinness World Records Limited. pp. 135. ISBN 978-1-908843-15-9. 48. ^ Glenday, Craig (2014). Guinness World Records . Guinness World Records Limited. pp. 135 . ISBN 978-1-908843-15-9 .
49. ^ Suomen kunnallisvaakunat (in Finnish). Suomen Kunnallisliitto. 1982. p. 147. ISBN 951-773-085-3. 49. ^ Suomen kunnallisvaakunat (in Finnish). Suomen Kunnallisliitto. 1982. p. 147. ISBN 951-773-085-3 .
50. ^ "Lubānas simbolika" (in Latvian) . Retrieved September 9, 2021 . 50. ^ "Lubānas simbolika" (in Latvian) . Retrieved September 9, 2021 .
51. ^ "Föglö" (in Swedish) . Retrieved September 9, 2021 . 51. ^ "Föglö" (in Swedish) . Retrieved September 9, 2021 .
52. ^ Young, Emma. "World's funniest joke revealed" . New Scientist . Retrieved 7 January 2019 . 52. ^ Young, Emma. "World's funniest joke revealed" . New Scientist . Retrieved 7 January 2019 .
53. ^ "Howard the Duck (character)" . Grand Comics Database . 53. ^ "Howard the Duck (character)" . Grand Comics Database .
54. ^ Sanderson, Peter; Gilbert, Laura (2008). "1970s". Marvel Chronicle A Year by Year History. London, United Kingdom: Dorling Kindersley. p. 161. ISBN 978-0756641238. December saw the debut of the cigar-smoking Howard the Duck. In this story by writer Steve Gerber and artist Val Mayerik, various beings from different realities had begun turning up in the Man-Thing's Florida swamp, including this bad-tempered talking duck. 54. ^ Sanderson, Peter ; Gilbert, Laura (2008). "1970s". Marvel Chronicle A Year by Year History . London, United Kingdom: Dorling Kindersley . p. 161. ISBN 978-0756641238 . December saw the debut of the cigar-smoking Howard the Duck. In this story by writer Steve Gerber and artist Val Mayerik, various beings from different realities had begun turning up in the Man-Thing's Florida swamp, including this bad-tempered talking duck.
55. ^ "The Duck" . University of Oregon Athletics . Retrieved 2022-01-20 . 55. ^ "The Duck" . University of Oregon Athletics . Retrieved 2022-01-20 .
### Sources #### Sources
- American Ornithologists' Union (1998). Checklist of North American Birds (PDF). Washington, DC: American Ornithologists' Union. ISBN 978-1-891276-00-2. Archived (PDF) from the original on 2022-10-09. - American Ornithologists' Union (1998). Checklist of North American Birds (PDF) . Washington, DC: American Ornithologists' Union. ISBN 978-1-891276-00-2 . Archived (PDF) from the original on 2022-10-09.
- Carboneras, Carlos (1992). del Hoyo, Josep; Elliott, Andrew; Sargatal, Jordi (eds.). Handbook of the Birds of the World. Vol. 1: Ostrich to Ducks. Barcelona: Lynx Edicions. ISBN 978-84-87334-10-8. - Carboneras, Carlos (1992). del Hoyo, Josep; Elliott, Andrew; Sargatal, Jordi (eds.). Handbook of the Birds of the World . Vol. 1: Ostrich to Ducks. Barcelona: Lynx Edicions. ISBN 978-84-87334-10-8 .
- Christidis, Les; Boles, Walter E., eds. (2008). Systematics and Taxonomy of Australian Birds. Collingwood, VIC: Csiro Publishing. ISBN 978-0-643-06511-6. - Christidis, Les; Boles, Walter E., eds. (2008). Systematics and Taxonomy of Australian Birds . Collingwood, VIC: Csiro Publishing. ISBN 978-0-643-06511-6 .
- Donne-Goussé, Carole; Laudet, Vincent; Hänni, Catherine (July 2002). "A molecular phylogeny of Anseriformes based on mitochondrial DNA analysis". Molecular Phylogenetics and Evolution. 23 (3): 339356. Bibcode:2002MolPE..23..339D. doi:10.1016/S1055-7903(02)00019-2. PMID 12099792. - Donne-Goussé, Carole; Laudet, Vincent; Hänni, Catherine (July 2002). "A molecular phylogeny of Anseriformes based on mitochondrial DNA analysis". Molecular Phylogenetics and Evolution . 23 (3): 339356. Bibcode : 2002MolPE..23..339D . doi : 10.1016/S1055-7903(02)00019-2 . PMID 12099792 .
- Elphick, Chris; Dunning, John B. Jr.; Sibley, David, eds. (2001). The Sibley Guide to Bird Life and Behaviour. London: Christopher Helm. ISBN 978-0-7136-6250-4. - Elphick, Chris; Dunning, John B. Jr.; Sibley, David, eds. (2001). The Sibley Guide to Bird Life and Behaviour . London: Christopher Helm. ISBN 978-0-7136-6250-4 .
- Erlandson, Jon M. (1994). Early Hunter-Gatherers of the California Coast. New York, NY: Springer Science &amp; Business Media. ISBN 978-1-4419-3231-0. - Erlandson, Jon M. (1994). Early Hunter-Gatherers of the California Coast . New York, NY: Springer Science &amp; Business Media. ISBN 978-1-4419-3231-0 .
- Fieldhouse, Paul (2002). Food, Feasts, and Faith: An Encyclopedia of Food Culture in World Religions. Vol. I: AK. Santa Barbara: ABC-CLIO. ISBN 978-1-61069-412-4. - Fieldhouse, Paul (2002). Food, Feasts, and Faith: An Encyclopedia of Food Culture in World Religions . Vol. I: AK. Santa Barbara: ABC-CLIO. ISBN 978-1-61069-412-4 .
- Fitter, Julian; Fitter, Daniel; Hosking, David (2000). Wildlife of the Galápagos. Princeton, NJ: Princeton University Press. ISBN 978-0-691-10295-5. - Fitter, Julian; Fitter, Daniel; Hosking, David (2000). Wildlife of the Galápagos . Princeton, NJ: Princeton University Press. ISBN 978-0-691-10295-5 .
- Higman, B. W. (2012). How Food Made History. Chichester, UK: John Wiley &amp; Sons. ISBN 978-1-4051-8947-7. - Higman, B. W. (2012). How Food Made History . Chichester, UK: John Wiley &amp; Sons. ISBN 978-1-4051-8947-7 .
- Hume, Julian H. (2012). Extinct Birds. London: Christopher Helm. ISBN 978-1-4729-3744-5. - Hume, Julian H. (2012). Extinct Birds . London: Christopher Helm. ISBN 978-1-4729-3744-5 .
- Jeffries, Richard (2008). Holocene Hunter-Gatherers of the Lower Ohio River Valley. Tuscaloosa: University of Alabama Press. ISBN 978-0-8173-1658-7. - Jeffries, Richard (2008). Holocene Hunter-Gatherers of the Lower Ohio River Valley . Tuscaloosa: University of Alabama Press. ISBN 978-0-8173-1658-7 .
- Kear, Janet, ed. (2005). Ducks, Geese and Swans: Species Accounts (Cairina to Mergus). Bird Families of the World. Oxford: Oxford University Press. ISBN 978-0-19-861009-0. - Kear, Janet, ed. (2005). Ducks, Geese and Swans: Species Accounts ( Cairina to Mergus ) . Bird Families of the World. Oxford: Oxford University Press. ISBN 978-0-19-861009-0 .
- Livezey, Bradley C. (October 1986). "A phylogenetic analysis of recent Anseriform genera using morphological characters" (PDF) . The Auk . 103 (4): 737754. doi : 10.1093/auk/103.4.737 . Archived (PDF) from the original on 2022-10-09. - Livezey, Bradley C. (October 1986). "A phylogenetic analysis of recent Anseriform genera using morphological characters" (PDF) . The Auk . 103 (4): 737754. doi : 10.1093/auk/103.4.737 . Archived (PDF) from the original on 2022-10-09.
- Madsen, Cort S.; McHugh, Kevin P.; de Kloet, Siwo R. (July 1988). "A partial classification of waterfowl (Anatidae) based on single-copy DNA" (PDF) . The Auk . 105 (3): 452459. doi : 10.1093/auk/105.3.452 . Archived (PDF) from the original on 2022-10-09. - Madsen, Cort S.; McHugh, Kevin P.; de Kloet, Siwo R. (July 1988). "A partial classification of waterfowl (Anatidae) based on single-copy DNA" (PDF) . The Auk . 105 (3): 452459. doi : 10.1093/auk/105.3.452 . Archived (PDF) from the original on 2022-10-09.
- Maisels, Charles Keith (1999). Early Civilizations of the Old World. London: Routledge. ISBN 978-0-415-10975-8. - Maisels, Charles Keith (1999). Early Civilizations of the Old World . London: Routledge. ISBN 978-0-415-10975-8 .
- Pratt, H. Douglas; Bruner, Phillip L.; Berrett, Delwyn G. (1987). A Field Guide to the Birds of Hawaii and the Tropical Pacific. Princeton, NJ: Princeton University Press. ISBN 0-691-02399-9. - Pratt, H. Douglas; Bruner, Phillip L.; Berrett, Delwyn G. (1987). A Field Guide to the Birds of Hawaii and the Tropical Pacific . Princeton, NJ: Princeton University Press. ISBN 0-691-02399-9 .
- Rau, Charles (1876). Early Man in Europe. New York: Harper &amp; Brothers. LCCN 05040168. - Rau, Charles (1876). Early Man in Europe . New York: Harper &amp; Brothers. LCCN 05040168 .
- Shirihai, Hadoram (2008). A Complete Guide to Antarctic Wildlife. Princeton, NJ, US: Princeton University Press. ISBN 978-0-691-13666-0. - Shirihai, Hadoram (2008). A Complete Guide to Antarctic Wildlife . Princeton, NJ, US: Princeton University Press. ISBN 978-0-691-13666-0 .
- Sued-Badillo, Jalil (2003). Autochthonous Societies. General History of the Caribbean. Paris: UNESCO. ISBN 978-92-3-103832-7. - Sued-Badillo, Jalil (2003). Autochthonous Societies . General History of the Caribbean. Paris: UNESCO. ISBN 978-92-3-103832-7 .
- Thorpe, I. J. (1996). The Origins of Agriculture in Europe. New York: Routledge. ISBN 978-0-415-08009-5. - Thorpe, I. J. (1996). The Origins of Agriculture in Europe . New York: Routledge. ISBN 978-0-415-08009-5 .
## External links ### External links
Duck at Wikipedia's sister projects
- Definitions from Wiktionary - Definitions from Wiktionary
- Media from Commons - Media from Commons
@ -473,15 +525,75 @@ The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck a
- Ducks at a Distance, by Rob Hines at Project Gutenberg - A modern illustrated guide to identification of US waterfowl - Ducks at a Distance, by Rob Hines at Project Gutenberg - A modern illustrated guide to identification of US waterfowl
| Authority control databases | Authority control databases | | Authority control databases | Authority control databases |
|--------------------------------|----------------------------------------------| |-------------------------------|----------------------------------------------|
| National | United StatesFranceBnF dataJapanLatviaIsrael | | National | United StatesFranceBnF dataJapanLatviaIsrael |
| Other | IdRef | | Other | IdRef |
<!-- image --> NewPP limit report
Retrieved from "" Parsed by mwweb.codfw.main5d5b97b956mw5gf
: Cached time: 20241001035144
Cache expiry: 2592000
Reduced expiry: false
Complications: [varyrevisionsha1, showtoc]
CPU time usage: 1.191 seconds
Real time usage: 1.452 seconds
Preprocessor visited node count: 12444/1000000
Postexpand include size: 122530/2097152 bytes
Template argument size: 9168/2097152 bytes
Highest expansion depth: 14/100
Expensive parser function count: 14/500
Unstrip recursion depth: 1/20
Unstrip postexpand size: 165576/5000000 bytes
Lua time usage: 0.865/10.000 seconds
Lua memory usage: 25093454/52428800 bytes
Number of Wikibase entities loaded: 1/400
Transclusion expansion time report (%,ms,calls,template)
100.00% 1311.889 1 -total
22.17% 290.786 1 Template:Automatic\_taxobox
16.91% 221.802 1 Template:Reflist
10.86% 142.472 44 Template:Sfn
9.48% 124.344 15 Template:Lang
9.25% 121.312 15 Template:Cite\_web
8.03% 105.346 26 Template:Cite\_book
5.85% 76.725 1 Template:Short\_description
5.74% 75.262 1 Template:Authority\_control
4.50% 58.973 1 Template:Sisterlinks
Saved in parser cache with key enwiki:pcache:idhash:37674-0!canonical and timestamp 20241001035144 and revision id 1246843351. Rendering was triggered because: page-view
esi &lt;esi:include src="/esitest-fa8a495983347898/content" /&gt;
Retrieved from "https://en.wikipedia.org/w/index.php?title=Duck&amp;oldid=1246843351"
Categories:
- Ducks - Ducks
- Game birds - Game birds
@ -516,7 +628,7 @@ Hidden categories:
- Articles with Project Gutenberg links - Articles with Project Gutenberg links
- Articles containing video clips - Articles containing video clips
- This page was last edited on 21 September 2024, at 12:11 (UTC). - This page was last edited on 21 September 2024, at 12:11 (UTC) .
- Text is available under the Creative Commons Attribution-ShareAlike License 4.0 ; - Text is available under the Creative Commons Attribution-ShareAlike License 4.0 ;
additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy . Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. , a non-profit organization. additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy . Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. , a non-profit organization.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,21 @@
<html>
<body>
<h1>Introduction to parsing HTML files with <img src="https://docling-project.github.io/docling/assets/logo.png" alt="Docling" height="64"> Docling</h1>
<p>Docling simplifies document processing, parsing diverse formats — including HTML — and providing seamless integrations with the gen AI ecosystem.</p>
<h2>Supported file formats</h2>
<p>Docling supports multiple file formats..</p>
<ul>
<li><img src="file://../assets/pdf.png" height="32" alt="PDF">Advanced PDF understanding</li>
<li><img src="file://../assets/docx.png" height="32" alt="DOCX">Microsoft Office DOCX</li>
<li><img src="file://../assets/html.png" height="32" alt="HTML">HTML files (with optional support for images)</li>
</ul>
<h3>Three backends for handling HTML files</h3>
<p>Docling has three backends for parsing HTML files:</p>
<ol>
<li><b>HTMLDocumentBackend</b> Ignores images</li>
<li><b>HTMLDocumentBackendImagesInline</b> Extracts images inline</li>
<li><b>HTMLDocumentBackendImagesReferenced</b> Extracts images as references</li>
</ol>
</body>
</html>

View File

@ -0,0 +1,21 @@
<html>
<body>
<h1>Introduction to parsing HTML files with <img src="https://docling-project.github.io/docling/assets/logo.png" alt="Docling" height="64"> Docling</h1>
<p>Docling simplifies document processing, parsing diverse formats — including HTML — and providing seamless integrations with the gen AI ecosystem.</p>
<h2>Supported file formats</h2>
<p>Docling supports multiple file formats..</p>
<ul>
<li><img src="https://github.com/docling-project/docling/tree/main/docs/assets/pdf.png" height="32" alt="PDF">Advanced PDF understanding</li>
<li><img src="https://github.com/docling-project/docling/tree/main/docs/assets/docx.png" height="32" alt="DOCX">Microsoft Office DOCX</li>
<li><img src="https://github.com/docling-project/docling/tree/main/docs/assets/html.png" height="32" alt="HTML">HTML files (with optional support for images)</li>
</ul>
<h3>Three backends for handling HTML files</h3>
<p>Docling has three backends for parsing HTML files:</p>
<ol>
<li><b>HTMLDocumentBackend</b> Ignores images</li>
<li><b>HTMLDocumentBackendImagesInline</b> Extracts images inline</li>
<li><b>HTMLDocumentBackendImagesReferenced</b> Extracts images as references</li>
</ol>
</body>
</html>

View File

@ -37,10 +37,10 @@ def test_heading_levels():
if isinstance(item, SectionHeaderItem): if isinstance(item, SectionHeaderItem):
if item.text == "Etymology": if item.text == "Etymology":
found_lvl_1 = True found_lvl_1 = True
assert item.level == 1 assert item.level == 2
elif item.text == "Feeding": elif item.text == "Feeding":
found_lvl_2 = True found_lvl_2 = True
assert item.level == 2 assert item.level == 3
assert found_lvl_1 and found_lvl_2 assert found_lvl_1 and found_lvl_2